• 締切済み

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; } }

みんなの回答

  • teketon
  • ベストアンサー率65% (141/215)
回答No.1

こんなO/Rマッパーがあるんですね。とりあえず、ドキュメントさらっとみてみましたが クラスアノテーションのmappingModeがmodifyの場合、DatabaseMeta情報を勝手に読みこむようです。 userテーブルの定義を見る限り、primary keyの定義がないので、それでエラーが発生するのではないですか? あと、,databaseGenerated=trueが付いていますが、同様にテーブル側での自動生成(オートインクリメント?)の定義が必要だと思われます。

関連するQ&A

専門家に質問してみよう