JPAでは基本的に1テーブル、1クラスです。
このためプロパティは必然的にテーブルのフィールドに対応しています。
ただ、必ずしもプロパティだけでなく、臨時で持たせておきたい、プロパティがあったりします。
これをそのまま記述するとフィールドにありません、といったエラーがでますので、そんなときはフィールドとしては使わないといった記述が必要になります。
具体的には下記のような記述です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
public class TraceEntityBase { /** * レコードを特定するキーの組み合わせ * (非カラム) */ @Transient private List<Map<String,String>> uniqueKeyList; @Column(name = "serial") private Integer serial; { uniqueKeyList = new ArrayList<>(); } public Integer getSerial() { return serial; } public void setSerial(Integer serial) { this.serial = serial; } public List<Map<String,String>> getUniqueKeyList() { return uniqueKeyList; } public void setUniqueKeyList(List<Map<String,String>> uniqueKeyList) { this.uniqueKeyList = uniqueKeyList; } public void putUniqueKeyMap(Map<String,String> fieldParam){ this.uniqueKeyList.add(fieldParam); } } |
@Transientとなっているアノテーションの部分がそれにあたります。
これでフィールド以外のプロパティを持たせることができます。