当前位置: 首页 > 知识库问答 >
问题:

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

侯兴为
2023-03-14
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;
}


}

共有1个答案

翟沈义
2023-03-14

您应该创建一个新的@embeddable类,其中包含PK字段:

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

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

并在@实体中作为@embeddedid:

@Entity
public class user_group {

    @EmbeddedId
    user_groupId id;

    ...
}

您还可以使用@idclass注释来实现这一目的。

 类似资料:
  • 问题内容: 这是我的注释类,我想同时将列作为主键。我发现了与此有关的更多问题,但未找到相关答案。我的声誉较差,所以我无法在帖子中发表评论,所以我将我的问题放在这里。 这是我的代码。 问题答案: 您应该创建一个包含PK字段的新类: 并将其用作: 您也可以使用注释来达到这种效果。 这出色答卷由帕斯卡尔Thivent阐述了细节。您也可以看看这个其他答案,我前一段时间发布到一个几乎相同的问题。 附带说明一

  • 问题内容: 在Hibernate中如何注释Blob列?到目前为止,我有一堂课,有: 问题答案: @Lob应该可以解决blob和clob(使用String作为类型)

  • 我是初学Hibernate的,我不知道如何使用JPA或Hibernate注释来映射这个简单的模型。我尝试建模是提供商具有全局评级,并且全局评级实体的标识符与提供商实体的标识符相同(单向OneToOne),换句话说,我希望实体全局评级中的外键同时是主的和外部的,但是提供商实体也具有实体全局评级的外键。这可能吗?

  • 我有一个数据库,它的一些表之间有关系,例如,我必须表Person和Company,它们的Id之间有一个一对多的关系,这是在Hibernate生成的表名Person_Company中构建的。当我在java中使用@onetomany和@manytoone注释时,它在它们之间建立了关系,但不是根据Person_Company表,我只使用表的Id什么是正确的注释?

  • 问题内容: 在python 3中,我可以设置参数并返回类型注释。例: 问题是我无法使用当前类(图形)的返回类型进行注释,该类型尚未定义。例: 这段代码有错误 这些注释对于记录文档以及允许IDE识别参数和返回类型都非常有用=>启用自动完成功能 UPD:所以我想到的是这是不可能的,或者需要一些我不喜欢的技巧,所以我决定使用 可以理解的文档,尽管这违反了规则。缺点是它不适用于IDE自动完成功能。 问题答

  • 我有两张员工和地址表。每个都有通过序列生成的主键empId和addressId。 员工类别: 地址类 公共课堂演讲{ } 我正在使用JPARepository来保存这两个实体。这是我的主类。 代码成功运行。但在我的地址表中,emp\u Id列包含主键,而不是emp\u Id列。 如何将“thinkerId”作为地址表中的值? 非常感谢。