虽然我尝试保存顶级实体(使用JPA),我是否需要从数据库刚刚获取ManyToOne映射的实体,并设置它或不能我只是设置Id ?的多对一映射的实体,并保存顶级实体 在没有得到新的实体,它抛出:org.hibernate.TransientObjectException:我们正在使用Hibernate - ManyToOne - 保存 - org.hibernate.TransientObjectException:
表结构:
DEPARTMENT(DEPARTMENT_ID BIGINT, NAME VARCHAR(128))
EMPLOYEE(EMPLOYEE_ID BIGINT, NAME VARCHAR(128), DEPARTMENT_ID BIGINT)
Entities:
class Department
{
@Id
Long departmentId;
String name;
@Version
Long versionNumber;
}
class Employee
{
@Id
Long employeeId;
String name;
@ManyToOne
Department department;
@Version
Long versionNumber
}
(两个类具有setter和getter所有字段和默认构造函数的方法,以主键作为参数的构造函数) 现在,如果我想用departmentId保存员工(比如说100),是否需要先取得部门记录,然后将其设置在员工中?
我不能直接创建Department实例(通过设置主键(departmentId))并在Employee中设置Department实例并保存Employee? 当我这样做时,它抛出org.hibernate.TransientObjectException。
关于最佳实践的任何建议都需要遵循吗?如果要保存父不保存每个孩子
预先感谢您
我不知道谁降低了这个?他们可以辩解吗? – 2011-06-07 22:58:19