gpt4 book ai didi

java - 如何在 hibernate 注释类中将两列作为主键

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:31:48 25 4
gpt4 key购买 nike

这是我的注释类,我希望 userIdgroupId 列都作为主键。我发现了更多关于此的问题( Question ),但没有找到相关答案。我的声誉较低,所以我无法对帖子发表评论,所以我把我的问题放在这里。

这是我的代码..

import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

import org.hibernate.annotations.NaturalId;

@Entity
@Table(name="user_group")
public class user_group {

@Column(name="serviceProvider")
private String serviceProvider;

@Column(name="enterpriseId")
private String enterpriseId;

@Column(name="department")
private String department;

@Column(name="trunkGroupName")
private String trunkGroupName;
@Id
@Column(name="userId")
private String userId;


@Column(name="groupId")
private String group;


public String getUserId() {
return userId;
}


public void setUserId(String userId) {
this.userId = userId;
}


public String getGroup() {
return group;
}


public void setGroup(String group) {
this.group = group;
}

public String getServiceProvider() {
return serviceProvider;
}

public void setServiceProvider(String serviceProvider) {
this.serviceProvider = serviceProvider;
}

public String getEnterpriseId() {
return enterpriseId;
}

public void setEnterpriseId(String enterpriseId) {
this.enterpriseId = enterpriseId;
}

public String getDepartment() {
return department;
}

public void setDepartment(String department) {
this.department = department;
}

public String getTrunkGroupName() {
return trunkGroupName;
}

public void setTrunkGroupName(String trunkGroupName) {
this.trunkGroupName = trunkGroupName;
}


}

最佳答案

您应该创建一个包含 PK 字段的新 @Embeddable 类:

@Embeddable
public class user_groupId implements Serializable {
@Column(name="userId")
private String userId;

@Column(name="groupId")
private String group;
}

并将它作为 @EmbeddedId@Entity 中使用:

@Entity
public class user_group {

@EmbeddedId
user_groupId id;

...
}

您也可以使用 @IdClass 注释来实现该效果。

excellent answer Pascal Thivent 详细阐述了细节。你也可以看看this前段时间我针对几乎相同的问题发布的其他答案。

附带说明一下,如果您可以控制数据库结构,您也可以考虑避免使用组合键。 There are some reasons to do so .

关于java - 如何在 hibernate 注释类中将两列作为主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21284175/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com