java – 来自同一个表注释的两个外键的Hibernate

前端之家收集整理的这篇文章主要介绍了java – 来自同一个表注释的两个外键的Hibernate前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我正在尝试设计一个酒店应用程序.我有两个表作为用户和请求.用户可以是主持人或访客,可以向对方发送主持人请求.但是没有必要将用户定义为访问者或主机,这对系统来说无关紧要,因此我没有单独的表格.这种差异在Request表中非常重要,需要将visitor_id和host_id保持为外键(使用User表中的user_id主键列映射,因为主机和访问者都是User).

我的问题是如何在Hibernate中使用Annotation定义这种关系?我的意思是,Request表中应该有两个外键,它们被映射到User表中的* user_id *主键列.每个用户可以多次成为主持人或访问者,并且不会发出任何请求.

@Entity
public class Request {
@Id
private Long req_id;

 ....

}
最佳答案
请求是针对主机的,也是来自访问者的,因此您只需要从请求到用户的2个ManyToOne关联:

@Entity
public class Request {
    @Id
    @Column(name = "req_id")
    private Long id;

    @ManyToOne
    @JoinColumn(name = "visitor_id")
    private User visitor;

    @ManyToOne
    @JoinColumn(name = "host_id")
    private User host;

    // ...
}

如果您想使这些关联成为双向的,那么您只需要在用户中使用相应的集合:

@Entity
private class User {

    /**
     * requests made to this user,in order for this user to be a host
     */
    @OneToMany(mappedBy = "host")
    private Set
原文链接:https://www.f2er.com/mysql/433129.html

猜你在找的MySQL相关文章