开发者社区> 问答> 正文

如何在JPA中添加用户实体和好友关系实体的外键

现有用户实体,相关代码如下:

@Entity
@Table(name = "t_users")
public class User extends Model {
    @Id
    @Column(name = "users_id")
    @GeneratedValue(strategy = GenerationType.AUTO)
    public Long userId;
    ...
}

以及好友关系实体,相关代码如下:

@Entity
@Table(name = "t_relationship")
public class Relationship extends Model {
    @Id
    @Column(name = "rs_id")
    public Long relationshipId;

    @Column(name = "rs_fromuser", nullable = false)
    public User fromUser;

    @Column(name = "rs_touser", nullable = false)
    public User toUser;
    ...
}

从SQL书写来考虑,只需要在关系实体的两个Column上添加外键约束即可。但却不知道在JPA中应该怎么完成。
个人数据库相关的知识比较欠缺,在这两个实体是不是多对多关系上存在疑问。
一个用户可以对应多个好友关系,一个好友关系对应固定的两个用户。应该说是n..2这种关系吗?
已经尝试使用@ManyToMany注解,但是我使用的Play 2框架和Ebean没有生成相对应的SQL语句。

展开
收起
蛮大人123 2016-03-04 16:22:31 3370 0
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪
    // User model类
    @Entity
    @Table(name = "t_users")
    public class User extends Model {
        @Id
        @Column(name = "u_id")
        @GeneratedValue(strategy = GenerationType.AUTO)
        public Long userId;
    
        @OneToMany(fetch = FetchType.LAZY, mappedBy = "fromUser")
        public List<Relationship> followUsers;
    
        @OneToMany(fetch = FetchType.LAZY, mappedBy = "toUser")
        public List<Relationship> followers;
        ...
    }
    
    @Entity
    @Table(name = "t_relationship")
    public class Relationship extends Model {
        @Id
        @Column(name = "rs_id")
        public Long relationshipId;
    
        @JoinColumn(name = "rs_fromuser", nullable = false, updatable = false)
        @ManyToOne(optional = false)
        public User fromUser;
    
        @JoinColumn(name = "rs_touser", nullable = false, updatable = false)
        @ManyToOne(optional = false)
        public User toUser;
        ...
    }
    2019-07-17 18:52:28
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载