チケット #22085

MirageSqlManagerImpl#insertEntityで生成されるINSERTの列名リストにプライマリーキーが含まれない

登録: 2010-06-04 12:05 最終更新: 2010-06-04 22:25

報告者:
担当者:
チケットの種類:
状況:
完了
コンポーネント:
マイルストーン:
(未割り当て)
優先度:
5 - 中
重要度:
5 - 中
解決法:
修正済み
ファイル:
なし

詳細

Mirage 1.0.2

以下のようにエンティティを定義し、insertEntityを行ったとする。

  1. public class Sample1 {
  2. @PrimaryKey(persistent=true)
  3. public Integer id;
  4. public String name;
  5. }
  1. Session session = SessionFactory.getSession();
  2. SqlManager sqlManager = session.getSqlManager();
  3. try {
  4. session.begin();
  5. Sample1 sample1 = new Sample1();
  6. sample1.id = 1;
  7. sample1.name = "foo";
  8. sqlManager.insertEntity(sample1);
  9. session.commit();
  10. }
  11. finally {
  12. session.release();
  13. }

これで生成されるSQLが不正になる(MySQLでは「Column count doesn't match value count」)。

  1. INSERT INTO SAMPLE1 (NAME) VALUES (?, ?)

@PrimaryKeyを削除すればINSERTは可能になるが・・・

チケットの履歴 (2 件中 2 件表示)

2010-06-04 12:05 更新者: bcohimei
  • 新しいチケット "[Mirage]SqlManagerImpl#insertEntityで生成されるINSERTの列名リストにプライマリーキーが含まれない" が作成されました
2010-06-04 22:25 更新者: takezoe
  • 担当者(未割り当て) から takezoe に更新されました
  • チケット完了時刻2010-06-04 22:25 に更新されました
  • 状況オープン から 完了 に更新されました
  • 解決法なし から 修正済み に更新されました
  • コンポーネント(未割り当て) から Mirage に更新されました
コメント

ご指摘ありがとうございます。@PrimaryKeyのpersistent属性にtrueを指定していた場合にINSERTの列名にプライマリキーが追加されていませんでした。trunkでは修正済みです。なお、persistent属性がfalseの場合はINSERT時にプライマリキーを含めないようにしています。

添付ファイルリスト

添付ファイルはありません

編集

このチケットにコメントを追加するには、ログインが必要です » ログインする