您可以注释_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
将具有 name _T_typeMap
, join 列将被调用_T_T_ID
,并且 key 列typeMap_KEY
和 value 列 - 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")
另外,请注意,连接列和键列被选为集合表的主键。