MirageSqlManagerImpl#insertEntityで生成されるINSERTの列名リストにプライマリーキーが含まれない
Mirage 1.0.2
以下のようにエンティティを定義し、insertEntityを行ったとする。
public class Sample1 { @PrimaryKey(persistent=true) public Integer id; public String name; }
Session session = SessionFactory.getSession(); SqlManager sqlManager = session.getSqlManager(); try { session.begin(); Sample1 sample1 = new Sample1(); sample1.id = 1; sample1.name = "foo"; sqlManager.insertEntity(sample1); session.commit(); } finally { session.release(); }
これで生成されるSQLが不正になる(MySQLでは「Column count doesn't match value count」)。
INSERT INTO SAMPLE1 (NAME) VALUES (?, ?)
@PrimaryKeyを削除すればINSERTは可能になるが・・・
ご指摘ありがとうございます。@PrimaryKeyのpersistent属性にtrueを指定していた場合にINSERTの列名にプライマリキーが追加されていませんでした。trunkでは修正済みです。なお、persistent属性がfalseの場合はINSERT時にプライマリキーを含めないようにしています。
Mirage 1.0.2
以下のようにエンティティを定義し、insertEntityを行ったとする。
これで生成されるSQLが不正になる(MySQLでは「Column count doesn't match value count」)。
@PrimaryKeyを削除すればINSERTは可能になるが・・・