给定这两个表:
CREATE TABLE `soc` (
`id` INT NOT NULL AUTO_INCREMENT,
`name` VARCHAR(32),
PRIMARY KEY (`id`));
CREATE TABLE `soc_attitude` (
`soc_id` INT NOT NULL,
`target_soc_id` INT NOT NULL,
`attitude` INT,
PRIMARY KEY (`soc_id`,`target_soc_id`));
在 Soc 类中,我想使用如下字段从 soc_attitude 表中获取与 this.soc_id 匹配的所有行:
private Map<Integer,Integer> attitudes;
其中 map 的key是target_soc_id,value是attitude。
我做到了这一点:
@Entity
@Table(name = "soc")
public class Soc {
@Id
@Column( name="id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@Column(name="name")
private String name;
@ElementCollection
@CollectionTable(name="soc_attitude",joinColumns=@JoinColumn(name="soc_id"))
@Column(name="attitude")
private Map<Integer,Integer> attitudes;
但我认为这将使 soc_id 成为关键,而 attitude 成为值(value)。
我使用什么注解? (使用 Hibernate 4.3.11.Final)
最佳答案
使用@MapKeyColumn
试试这个:
@ElementCollection
@CollectionTable(name="soc_attitude",joinColumns=@JoinColumn(name="soc_id"))
@Column(name="attitude")
@MapKeyColumn(name="target_soc_id")
private Map<Integer,Integer> attitudes;
关于java - jpa/hibernate 如何通过带注释的外键映射元素集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32980953/