0

私は自分のgrailsプロジェクトにjscienceの物理学の量を保存しようとしています。私は休止状態とデフォルトを使用していますが、一般的な適用性のあるものを好みます。私は特にMassに関心があり、自分のやり方があれば、ドメインオブジェクトに次のように線を引くだけです。

MyDomainClass {
  Amount<Mass> weight
}

しかし、それはこのエラーを引き起こします:

原因:org.hibernate.exception.DataException:挿入できませんでした:[project.MyDomainClass] at $ Proxy10.saveOrUpdate(Unknown Source)... 27 more原因:com.mysql.jdbc.MysqlDataTruncation:データの切り捨て:データもcom.mysql.jdbcのcom.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3535)のcom.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3601)の行1の列「weight」が長い。 MysqlIO.sendCommand(MysqlIO.java:1989)at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2150)at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2626)at com.mysql.jdbc .PreparedStatement.executeInternal(PreparedStatement.java:2119)at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2415)at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2333)atcom。mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2318)at org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:105)...28詳細

エラーを次のように変更することで修正できます

def weight

それ、またはより良い方法に何か問題がありますか?混合ユニットを処理するための利点を持つデータベースソリューションはありますか?これをグーグルで検索すると、すべてが単体テストに関するものであるため、非常にイライラします。

4

1 に答える 1

1

エラーメッセージをdef weight-で非表示にしただけで、フィールドが非永続的になりました。入力されていないため、GrailsとHibernateはそれを永続化して無視する方法を知りません。

私の推測では、オブジェクトをblobとして格納していて、デフォルトのサイズには大きすぎたと思いますが、それはおそらくあなたが望むものではありません。ドメインクラスでそれらをマップする方法については、 http://grails.org/doc/latest/guide/GORM.html#customHibernateTypesを参照してください。

Grailsドキュメント内のHibernateドキュメントへのリンクが壊れています-正しいURLはhttp://docs.jboss.org/hibernate/stable/core/manual/en-US/html/mapping.html#mapping-types-customです

jScienceにはすでにカスタムHibernateタイプが含まれている可能性があります(ディストリビューションまたはサードパーティから)-ドキュメントを確認する必要があります。

于 2012-01-15T15:08:36.677 に答える