- 締切済み
ButteflyPersistenceの主キー
現在O/RマッパーでButteflyPersistenceを使っているのですが、主キーがうまくマッピングできていないらしく更新・削除の処理をすると”No primary key columns for object mapping”というエラーが発生します。主キーを割り当てる方法がございましたらご教授ください。 設定したファイルの内容は以下の通りです。 DBはH2を使っています。 CREATE TABLE user ( ID Identity, NAME varchar(255) default NULL, AGE Integer (2), PRIMARY KEY (ID) ) Userクラス import com.jenkov.db.itf.mapping.AClassMapping; import com.jenkov.db.itf.mapping.AGetterMapping; import com.jenkov.db.itf.mapping.ASetterMapping; @AClassMapping(mappingMode="modify", tableName="user") public class User { @SuppressWarnings("unused") private static final long serialVersionUID = 1L; private int id; private int age; @AGetterMapping(columnName="ID",databaseGenerated=true) public int getId() { return id; } @ASetterMapping(columnName="ID") public void setId(int id) { this.id = id; } private String name; @AGetterMapping(columnName="NAME") public String getName() { return name; } @ASetterMapping(columnName="NAME") public void setName(String name) { this.name = name; } @AGetterMapping(columnName="AGE") public int getAge() { return age; } @ASetterMapping(columnName="AGE") public void setAge(int age) { this.age = age; } }
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- teketon
- ベストアンサー率65% (141/215)
こんなO/Rマッパーがあるんですね。とりあえず、ドキュメントさらっとみてみましたが クラスアノテーションのmappingModeがmodifyの場合、DatabaseMeta情報を勝手に読みこむようです。 userテーブルの定義を見る限り、primary keyの定義がないので、それでエラーが発生するのではないですか? あと、,databaseGenerated=trueが付いていますが、同様にテーブル側での自動生成(オートインクリメント?)の定義が必要だと思われます。