如何在JPA中映射具有额外列的多个自反关系
我试图通过Hibernate使用JPA映射用户/朋友关系。关系中有一个额外的列friendship Status,用于描述被请求的朋友是否接受了友谊请求。 这是我想通过映射得到的数据库模型如何在JPA中映射具有额外列的多个自反关系,jpa,many-to-many,extra,Jpa,Many To Many,Extra,我试图通过Hibernate使用JPA映射用户/朋友关系。关系中有一个额外的列friendship Status,用于描述被请求的朋友是否接受了友谊请求。 这是我想通过映射得到的数据库模型 User ===== Id Name etc... UserFriend =========== UserId ( foreign key --> user_id) FriendId ( foreign key --> user_id) userFriendStatus FriendShipRe
User
=====
Id
Name
etc...
UserFriend
===========
UserId ( foreign key --> user_id)
FriendId ( foreign key --> user_id)
userFriendStatus
FriendShipRequestDate
我还需要一个使用这种关系的代码示例。因为联接表中有其他列,所以不能使用多个来映射它。它必须映射为两个OneToMany关系: 一个用户(来源)有很多朋友 一个友谊针对一个源用户(请求友谊的用户) 一个友谊针对一个目标用户(必须接受友谊的用户) 因此,您应该拥有以下实体:
@Entity
public class User {
// ...
/**
* the list of friendships asked by this user
*/
@OneToMany(mappedBy = "sourceUser")
private List<Friensdship> frienships = new ArrayList<Friendship>();
}
@Entity
public class Friendship {
// ...
/**
* the user who asked the friendship
*/
@ManyToOne()
@JoinColumn(name = "user_id")
private User sourceUser;
/**
* the user to whom the friendship was asked
*/
@ManyToOne()
@JoinColumn(name = "friend_id")
private User targetUser;
}
@实体
公共类用户{
// ...
/**
*此用户请求的友谊列表
*/
@OneToMany(mappedBy=“sourceUser”)
private List frienships=new ArrayList();
}
@实体
公众阶级友谊{
// ...
/**
*询问友谊的用户
*/
@ManyToOne()
@JoinColumn(name=“user\u id”)
私有用户sourceUser;
/**
*向其请求友谊的用户
*/
@ManyToOne()
@JoinColumn(name=“friend\u id”)
私人用户targetUser;
}
如果需要,您还可以在用户中添加反向关系:
/**
* the list of friendships asked to this user
*/
@OneToMany(mappedBy = "targetUser")
private List<Friendship> requestedFriendships = new ArrayList<Friendship>();
/**
*向该用户请求的友谊列表
*/
@OneToMany(mappedBy=“targetUser”)
private List requestedFriendships=new ArrayList();