Java 如何在关系的多个方面使用复合主键持久化关系的多个方面的数据
我遇到了一个问题,任何帮助都将不胜感激。 我有一个一对多的关系实体,在关系的许多方面都有复合主键。 e、 g I有两个实体,如Java 如何在关系的多个方面使用复合主键持久化关系的多个方面的数据,java,spring-boot,hibernate,spring-data-jpa,spring-data,Java,Spring Boot,Hibernate,Spring Data Jpa,Spring Data,我遇到了一个问题,任何帮助都将不胜感激。 我有一个一对多的关系实体,在关系的许多方面都有复合主键。 e、 g I有两个实体,如Client和Client\u User,Client与Client\u User关联,后者具有复合主键I-e、Client\u id和User\u id,当我使用Spring data Jpa将数据持久化到客户端实体时,我想将数据持久化到客户端实体。我的实体如下所示: @实体 @表(name=“客户”) 公共类ClientEntity实现了可序列化{ 私人int客户ID
Client
和Client\u User
,Client
与Client\u User
关联,后者具有复合主键I-e、Client\u id
和User\u id
,当我使用Spring data Jpa将数据持久化到客户端
实体时,我想将数据持久化到客户端
实体。我的实体如下所示:
@实体
@表(name=“客户”)
公共类ClientEntity实现了可序列化{
私人int客户ID;
私有int用户id;
私有集合clientUsersByClientId;
// ...
@OneToMany(mappedBy=“clientByClientId”,fetch=FetchType.LAZY)
@级联(org.hibernate.annotations.CascadeType.SAVE\u UPDATE)
公共集合getClientUsersByClientId(){
返回clientUsersByClientId;
}
public void setClientUsersByClientId(集合clientUsersByClientId){
this.clientUsersByClientId=clientUsersByClientId;
}
}
@实体
@表(name=“客户\用户”)
@IdClass(ClientUserEntityPK.class)
公共类ClientUserEntity实现可序列化{
私人int客户ID;
私有int用户id;
@身份证
@列(name=“client\u id”)
public int getClientId(){
返回客户ID;
}
public void setClientId(int clientId){
this.clientId=clientId;
}
@身份证
@列(name=“user\u id”)
public int getUserId(){
返回用户标识;
}
public void setUserId(int userId){
this.userId=userId;
}
@许多酮
@JoinColumn(name=“client\u id”,referencedColumnName=“client\u id”,nullable=false,insertable=false,updateable=false)
公共客户端getClientByClientId(){
返回clientByClientId;
}
public void setClientByClientId(ClientEntity clientByClientId){
this.clientByClientId=clientByClientId;
}
}
公共类ClientUserEntityPK实现可序列化{
私人int客户ID;
私有int用户id;
@列(name=“client\u id”)
@身份证
public int getClientId(){
返回客户ID;
}
public void setClientId(int clientId){
this.clientId=clientId;
}
@列(name=“user\u id”)
@身份证
public int getUserId(){
返回用户标识;
}
public void setUserId(int userId){
this.userId=userId;
}
@凌驾
公共布尔等于(对象o){
如果(this==o)返回true;
如果(o==null | | getClass()!=o.getClass())返回false;
ClientUserEntityPK that=(ClientUserEntityPK)o;
return clientId==that.clientId&&
userId==that.userId;
}
@凌驾
公共int hashCode(){
返回Objects.hash(clientId,userId);
}
}
谢谢大家,我解决了这个问题。如果其他人也面临同样的问题,请发表评论,以便我写出详细的解决方案。谢谢大家,我解决了这个问题。如果其他人也面临同样的问题,请发表评论,以便我能写出详细的解决方案。