繁体   English   中英

使用主复合键中的一列将多对一映射休眠

[英]Hibernate many to one mapping using one column which is in primary composite keys

我现在正尝试使用休眠从mysql数据库检索数据。 但是,我遇到了org.hibernate.AnnotationException,它使我警惕我不能使用单个属性。 我的代码如下,请看一看。

@Entity
@Table(name = "master")
public class Master implements Serializable {
    @EmbeddedId
    private MasterPK id;

    @Column
    private String description;

    @Column
    private String username;

    @Column
    private String emailaddress;

    ....

    @OneToMany(mappedBy = "master")
    @LazyCollection(LazyCollectionOption.FALSE)
    private List<Child> childs;

    ....
    // Getter and setter
}


@Entity
@Table(name = "child")
public class Child implements Serializable {

    ....

    @Column
    private String code;

    @Column
    private String isGolden;

    @Column
    private Date startServiceDate;

    @Column
    private Date endServiceDate;

    @ManyToOne
    @JoinColumn(name="id_a", referencedColumnName="id_a")
    private Master master;

    ....
    // Getter and setter

}


@Embeddable
public class MasterPK implements Serializable {

    @Column(name="id_a")
    private String idA;

    @Column(name="id_b")
    private String idB;

    ...  
    //Classes generated by JPA Tools e.g. getter, setter, comparator
}

我尝试使用master.id_a和child.id_a映射主表和子表,而id_a和id_b是主表的主键。 因此,休眠引发异常,并且我无法启动我的应用程序。 但是我仍然只想通过id_a映射两个表,因为子表没有id_b。 设计是主表中的每一行都可能映射到多个子表。 我可以针对这种情况提出一些建议吗? 非常感谢!

在我看来,您“交换”了实体,也就是说,您定义的复合pk实际上似乎是典型子表的主键。 您可以发布实际表的架构吗? 这可能会有所帮助

暂无
暂无

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

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