标签:
User.java: @Entity @Table(name="t_user") public class User { private int id; private String name; private Group group; @ManyToOne(cascade={CascadeType.ALL} ) //Cascade设置级联 public Group getGroup() { return group; } public void setGroup(Group group) { this.group = group; } @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; } } Group.java @Entity @Table(name ="t_group") public class Group { private int id; private String name; private Set<User> users = new HashSet<User>(); @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; } @OneToMany(mappedBy="group") public Set<User> getUsers() { return users; } public void setUsers(Set<User> users) { this.users = users; } } 测试程序 HibernateORMappingTest.java: public class HibernateORMappingTest { private static SessionFactory sessionFactory; @BeforeClass public static void beforeClass(){ new SchemaExport(new AnnotationConfiguration().configure()).create(false, true); sessionFactory= new AnnotationConfiguration().configure().buildSessionFactory(); } @AfterClass public static void afterClass(){ sessionFactory.close(); } @Test public void testSaveUser(){ User u = new User(); u.setName("u1"); Group g = new Group(); g.setName("g1"); u.setGroup(g); Session s= sessionFactory.getCurrentSession(); s.beginTransaction(); //s.save(g); 加上这一句,就不报错了,可是视频教程里没这一句,只是设置了级联Cascade却能通过 s.save(u); s.getTransaction().commit(); } @Test public void testSchemaExport(){ new SchemaExport(new AnnotationConfiguration().configure()).create(false, true); } public static void main(String[] args){ beforeClass(); } }
Hibernate的一个问题object references an unsaved transient instance - save the transi5
标签:
原文地址:http://www.cnblogs.com/zengda/p/4433338.html