繁体   English   中英

jpa / hibernate如何通过带注释的外键映射元素集合

[英]jpa / hibernate how to map element collection by foreign key with annotations

鉴于这两个表:

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; 

地图的关键字是target_soc_id ,值是态度

我得到了这个:

 @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成为价值的关键和态度

我使用什么注释? (使用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; 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM