我有下表
Table T { Number: T_ID, String: Type, Number : AnotherKey}
该表具有复合主键(ID和Type)。
我需要加载一个类
class _T {
Long T_ID;
Map<String, Long> typeMap;
}
这里,如果所有可能的行具有相同的T_ID
,则typeMap是一个映射举个例子, 考虑行
ID Type Another Key
01 'A' 100
01 'B' 101
02 'A' 100
02 'B' 103
这应加载到2个类实例
{01: {[A:100, B:101]}}, {02. {[A:100, B:103]}}
如何在休眠中设置
答案 0 :(得分:2)
您可以注释_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
,密钥列为{{1} }和值列 - typeMap_KEY
。图形上看起来如下:
typeMap
实现这一目标:
Table _T_typeMap { Number: _T_T_ID, String: typeMap_KEY, Number : typeMap}
你要添加以下内容:
Table T { Number: T_ID, String: Type, Number : AnotherKey}
另请注意,选择连接列和键列作为集合表的主键。