Ticket #22085

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

오픈 날짜: 2010-06-04 12:05 마지막 업데이트: 2010-06-04 22:25

Reporter:
소유자:
Type:
Status:
Closed
Component:
MileStone:
(None)
Priority:
5 - Medium
Severity:
5 - Medium
Resolution:
Fixed
File:
None

Details

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は可能になるが・・・

Ticket History (2/2 Histories)

2010-06-04 12:05 Updated by: bcohimei
  • New Ticket "MirageSqlManagerImpl#insertEntityで生成されるINSERTの列名リストにプライマリーキーが含まれない" created
2010-06-04 22:25 Updated by: takezoe
  • Component Update from (None) to Mirage
  • Resolution Update from None to Fixed
  • Status Update from Open to Closed
  • Ticket Close date is changed to 2010-06-04 22:25
  • 소유자 Update from (None) to takezoe
댓글 올리기

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

Attachment File List

No attachments

Edit

Please login to add comment to this ticket » Login