嵌入式主键@EmbeddedId
来源:互联网 发布:淘宝图片排序二个一排 编辑:程序博客网 时间:2024/04/27 20:07
用于定义复合主键
方法1:
(1)编写一个嵌入式主键的类testPK
作为嵌入式主键类,要满足以下几点要求。
1.必须实现Serializable接口、必须有默认的public无参数的构造方法、必须覆盖equals 和hashCode方法,这些要求与使用复合主键的要求相同。
2.将嵌入式主键类使用@Embeddable标注,表示这个是一个嵌入式类。
@Embeddable
public class TestPK {
private String firstName;
private String lastName;
public TestPK() {
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
@Override
public boolean equals(Object o) {
testPK other = (testPK) obj;
EqualsBuilder builder = new EqualsBuilder();
builder.append(firstName, other.firstName).append(lastName,other.lastName);
boolean equals = builder.isEquals();
return equals;
}
@Override
public int hashCode() {
HashCodeBuilder builder = new HashCodeBuilder();
builder.append(firstName).append(lastName);
int code = builder.hashCode();
return code;
}
}
(2)通过@EmbeddedId注释标注实体中的嵌入式主键
注意:
1.必须要实现serializable接口
2.需要有无参的构造函数
3.@Embeddable注释,表示此类可以被插入某个entity中
4.两个class和Column的列名都必需与表里的列名一致,建立sql时,会自动选择TestPK里的列名
@Entity
@Table(name = "schemaname.tablename")
public class Test {
@EmbeddedId
private TestPK id;
private String name;
public Test() {
}
public int getId() {
return id.getId();
}
@Column(name = "firstname")
public String getFirstName(){
return id.getFirstName()
}
@Column(name = "lastname")
public String getLastName(){
return id.getLastName()
}
@Column(name = "name")
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
方法2:
(3)不想在TestPK中定义列名,可以用以下方法,用于公共复合主键
通过@AttributeOverride注释来指定Test类的firstName,lastName与数据库中表的first_name,last_name进行映射.
以下代码在class Test
@EmbeddedId
@AttributeOverrides( {
@AttributeOverride(name = firstName, column = @Column(name = first_name)),
@AttributeOverride(name = lastName, column = @Column(name = last_name)) })
不需要getFirstName,getLastName
方法1:
(1)编写一个嵌入式主键的类testPK
作为嵌入式主键类,要满足以下几点要求。
1.必须实现Serializable接口、必须有默认的public无参数的构造方法、必须覆盖equals 和hashCode方法,这些要求与使用复合主键的要求相同。
2.将嵌入式主键类使用@Embeddable标注,表示这个是一个嵌入式类。
@Embeddable
public class TestPK {
private String firstName;
private String lastName;
public TestPK() {
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
@Override
public boolean equals(Object o) {
testPK other = (testPK) obj;
EqualsBuilder builder = new EqualsBuilder();
builder.append(firstName, other.firstName).append(lastName,other.lastName);
boolean equals = builder.isEquals();
return equals;
}
@Override
public int hashCode() {
HashCodeBuilder builder = new HashCodeBuilder();
builder.append(firstName).append(lastName);
int code = builder.hashCode();
return code;
}
}
(2)通过@EmbeddedId注释标注实体中的嵌入式主键
注意:
1.必须要实现serializable接口
2.需要有无参的构造函数
3.@Embeddable注释,表示此类可以被插入某个entity中
4.两个class和Column的列名都必需与表里的列名一致,建立sql时,会自动选择TestPK里的列名
@Entity
@Table(name = "schemaname.tablename")
public class Test {
@EmbeddedId
private TestPK id;
private String name;
public Test() {
}
public int getId() {
return id.getId();
}
@Column(name = "firstname")
public String getFirstName(){
return id.getFirstName()
}
@Column(name = "lastname")
public String getLastName(){
return id.getLastName()
}
@Column(name = "name")
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
方法2:
(3)不想在TestPK中定义列名,可以用以下方法,用于公共复合主键
通过@AttributeOverride注释来指定Test类的firstName,lastName与数据库中表的first_name,last_name进行映射.
以下代码在class Test
@EmbeddedId
@AttributeOverrides( {
@AttributeOverride(name = firstName, column = @Column(name = first_name)),
@AttributeOverride(name = lastName, column = @Column(name = last_name)) })
不需要getFirstName,getLastName
- 嵌入式主键@EmbeddedId
- 嵌入式主键@EmbeddedId
- 嵌入式主键@EmbeddedId
- 注解开发嵌入式主键@EmbeddedId
- Hibernate基础之六:联合主键@EmbeddedId
- JPA 主键@Id、@IdClass、@Embeddable、@EmbeddedId
- JPA联合主键的使用(@EmbeddedId+@Embeddable)
- JPA 菜鸟教程 13 复合主键-@EmbeddedId+@Embeddable
- 在jpa的JpaRepository需要对符合主键@EmbeddedId 中的一个字段进行查询的用法
- jpa嵌入式复合主键
- Hibernate @IdClass @EmbeddedID相关注解
- hibernate3 注释生成复合主键或者嵌入式主键的方法及实例
- hibernate3注释生成复合主键或者嵌入式主键的方法及实例
- 主键
- 主键
- 主键
- 主键
- 主键
- 《C++ Primer》中的TextQuery例子
- python sys.modules模块
- Java 分治法来解二分查找
- apk反编译教程[素材提取,源码查看]
- Http服务器的交互请求 GET,POST,PUT和DELETE
- 嵌入式主键@EmbeddedId
- 关于jdom解析XML文件的方法将获得信息转存到PO对象里面
- centos6快速安装opennebula 3.8.1 4.2.0
- CVS update文件的提示信息说明
- [MVC] 深入浅出Spring MVC
- 音频采样率
- php清空目录函数
- js去掉空格(左,右,全部)
- 装箱和拆箱