这是我的注释类,我想userId
同时将groupId
列作为主键。我发现了与此有关的更多问题,但未找到相关答案。我的声誉较差,所以我无法在帖子中发表评论,所以我将我的问题放在这里。
这是我的代码。
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;
}
}
您应该创建一个@Embeddable
包含PK字段的新类:
@Embeddable
public class user_groupId implements Serializable {
@Column(name="userId")
private String userId;
@Column(name="groupId")
private String group;
}
并将其@Entity
用作@EmbeddedId
:
@Entity
public class user_group {
@EmbeddedId
user_groupId id;
...
}
您也可以使用@IdClass
注释来达到这种效果。
这出色答卷由帕斯卡尔Thivent阐述了细节。您也可以看看这个其他答案,我前一段时间发布到一个几乎相同的问题。
附带说明一下,如果您可以控制数据库结构,则还可以考虑避免使用复合键。
问题内容: 休眠注释应该放在哪里? 它是我的实例变量上方的线吗?还是在吸气剂之前?还是在二传手之前?还是真的不重要吗? 非常感谢 问题答案: 您可以将它们放在 野外 或 吸气剂上 。从《 Hibernate注释参考指南》中: 2.2.1。将POJO标记为持久实体 (…) 根据您是否注释字段或方法,Hibernate使用的访问类型将是字段或属性。EJB3规范要求您在将要访问的元素类型上声明注释,即,
问题内容: 在这里hibernate新手。我正在研究一个简单的Hibernate映射文件。当我使用xml方法时,我将生成器类设置为Assigned。在分配员工ID之前,必须先检查某些逻辑,这样我才能自动生成它。 但是我也在研究注释类型,并且随着框架从配置文件移开,如今注释似乎已经成为现实。但是我找不到任何与分配值匹配的世代类型 这是否意味着分配时不需要添加任何序列生成器注释?谢谢 问题答案: 只需
问题内容: 我的Java模型上有一个枚举类型,我想映射到数据库中的表。我正在使用休眠注释,但我不知道该怎么做。由于我搜索的答案比较旧,我想知道哪种方法最好? 提前致谢 问题答案: 除了注释,您还需要其他东西吗?例如,以下枚举: 可以这样使用和注释: 您可以使用批注的enum属性指定枚举应如何在数据库中持久化。指定该枚举将作为整数值保留。在这里,设置为将永久保存为0,保留为1,依此类推。 替代方法是
问题内容: 什么和何时在休眠状态下使用DiscriminatorValue注释的最佳方案是什么? 问题答案: 这两个链接帮助我最了解继承概念: http://docs.oracle.com/javaee/6/tutorial/doc/bnbqn.html http://www.javaworld.com/javaworld/jw-01-2008/jw-01-jpa1.html?page=6 要了解
问题内容: 在我见过的Java类中 用于什么目的 问题答案: 来自维基百科: 数据库实例的 数据库目录 由元数据组成,其中存储了数据库对象的定义,例如基本表,视图(虚拟表),同义词,值范围,索引,用户和用户组。 另外,如果您的数据库是MySQL,请检查此内容。 希望能有所帮助。