hibernate--联合主键--annotation
2024-08-28 15:27:16
有3种方式:
1.@Embeddedable
2.@EmbeddedId
3. @IdClass
2,3 最常用
一, @Embeddedable
1.新建TeacherPK.java, 加入@Embeddable:
package com.bjsxt.hibernate; import javax.persistence.Embeddable; @Embeddable
public class TeacherPK implements java.io.Serializable{
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
} }
2. 重写Teacher.java, 加入pk对象, 并设置@Id:
package com.bjsxt.hibernate; import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table; @Entity
@Table(name="_Teacher")
public class Teacher {
private TeacherPK pk;
@Id
public TeacherPK getPk() {
return pk;
}
public void setPk(TeacherPK pk) {
this.pk = pk;
}
private String title; public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
}
3. 重写junit测试方法:
@Test
public void testTeacherSave() {
TeacherPK pk=new TeacherPK();
pk.setId(1);
pk.setName("lisi"); Teacher t =new Teacher();
t.setPk(pk);
t.setTitle("higfdfsdfsadh"); Session session = sf.openSession();
session.beginTransaction();
session.save(t);
session.getTransaction().commit();
session.close();
}
二: @EmbeddedId
1. 去掉TeacherPK.java的@Embeddable:
package com.bjsxt.hibernate; import javax.persistence.Embeddable; public class TeacherPK implements java.io.Serializable{
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
} }
2. Teacher.java里@Id的地方改成@EmbeddedId
package com.bjsxt.hibernate; import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.IdClass;
import javax.persistence.Table; @Entity
@Table(name="_Teacher")
//@IdClass(value=TeacherPK.class)
public class Teacher {
private TeacherPK pk = new TeacherPK();
@EmbeddedId
public TeacherPK getPk() {
return pk;
}
public void setPk(TeacherPK pk) {
this.pk = pk;
}
private String title; public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
}
3. test方法:
@Test
public void testTeacherSave() {
TeacherPK pk=new TeacherPK();
pk.setId(2);
pk.setName("lisi"); Teacher t =new Teacher();
t.setPk(pk);
t.setTitle("higfdfsdfsadh"); Session session = sf.openSession();
session.beginTransaction();
session.save(t);
session.getTransaction().commit();
session.close();
}
三, @IdClass
1. TeacherPK.java:
package com.bjsxt.hibernate; import javax.persistence.Embeddable; public class TeacherPK implements java.io.Serializable{
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
} }
2. Teacher.java里类前加入IdClass:
package com.bjsxt.hibernate; import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.IdClass;
import javax.persistence.Table; @Entity
@Table(name="_Teacher")
@IdClass(value=TeacherPK.class)
public class Teacher {
private int id;
private String name;
private String title; @Id
@GeneratedValue
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
} public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
}
3. junit的测试方法;
@Test
public void testTeacherSave() {
Teacher t =new Teacher();
t.setId(1);
t.setName("zhagnsan");
t.setTitle("higfdfsdfsadh"); Session session = sf.openSession();
session.beginTransaction();
session.save(t);
session.getTransaction().commit();
session.close();
}
最新文章
- 初识WebService
- spring-cloud-event-sourcing-example-master 运行效果及说明
- jQuery Mobile的基本使用
- android edittext 去边框 去下划线
- Windows 8.1/Server 2012 R2/Embedded 8.1 with Update 3(MSDN最新版)
- 重新想象 Windows 8 Store Apps (53) - 绑定: 与 ObservableCollection CollectionViewSource VirtualizedFilesVector VirtualizedItemsVector 绑定
- 四则运算 Day3
- SQL的主键和外键约束(转)
- (转载)JavaScript中的Window窗口对象
- Redis集群服务器-高可用调研随笔[转]
- POI实现excel各种验证和导入的思路总结
- C# Linq基本常用用法
- 插件前奏-android黑科技 hook介绍
- mxgraph进阶(三)Web绘图——mxGraph项目实战(精华篇)
- Core官方DI解析(4)--CallSiteRuntimeResolver
- Spring 依赖注入方式详解(四)
- doctrine/annotation 的简单使用
- Java 8 新特性-菜鸟教程 (5) -Java 8 Stream
- jode反编译软件
- vue10行代码实现上拉翻页加载更多数据,纯手写js实现下拉刷新上拉翻页不引用任何第三方插件