_T
次のように、目標を達成するためにクラスに注釈を付けることができます。
@Entity
public class _T implements Serializable {
private static final long serialVersionUID = -5906661729869048121L;
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Long T_ID;
@ElementCollection
@CollectionTable(name="T",joinColumns=@JoinColumn(name="T_ID"))
@MapKeyColumn(name="Type")
@Column(name="AnotherKey")
private Map<String, Long> typeMap;
public Map<String, Long> getTypeMap() {
return typeMap;
}
public void setTypeMap(Map<String, Long> typeMap) {
this.typeMap = typeMap;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
}
@ElementCollection
アノテーションを使用することもできますが、その場合、コレクションテーブルT
には名前が付けられ_T_typeMap
、結合列が呼び出され_T_T_ID
、キー列typeMap_KEY
と値列が呼び出されます- typeMap
。グラフィック的には次のようになります。
Table _T_typeMap { Number: _T_T_ID, String: typeMap_KEY, Number : typeMap}
これを達成するには:
Table T { Number: T_ID, String: Type, Number : AnotherKey}
以下を追加します。
@CollectionTable(name="T",joinColumns=@JoinColumn(name="T_ID"))
@MapKeyColumn(name="Type")
@Column(name="AnotherKey")
また、コレクションテーブルの主キーとして結合列とキー列が選択されていることに注意してください。