我正在使用Hibernate 4.1.0和JPA 2.0
我有一个像下面这样的实体类
@Entity
@Table(name = "V_EMPLOYEES")
public class Employee {
@Id
@Column(name = "EMPLOYEENUMBER")
private String employeeNumber;
@Column(name = "EMPLOYEENAME")
private String employeeName;
@Column(name = "DEPARTMENT")
private String dept;
/ *以上的吸气器和设置器* /
...
..
@Table(name = "V_EMPLOYEES")
这里的V_EMPLOYEES
是view
,在这里我使用它从查询表中获取employeename
并与employeeno
联接。我使用上面的方法在数据表中显示值,并且工作正常。
当用户单击“添加”按钮和一个弹出对话框时,我想创建一个新的员工记录
用户输入
employeenumber
,employeestatus
,employeedepartment
等的位置当我在我的
view
类中使用Entity
时,如果要创建新的员工记录,我应该创建一个可更新的数据库view
还是创建对Entity
的新Employee
类引用表?如果出于查看目的,我有一些列不在数据表中,而又想用于创建或更新记录,该怎么办?最佳方法和最佳做法是什么?
我正在使用
EntityManager
进行数据提取和持久化(插入,更新和删除)任何帮助都是非常明显的
最佳答案
鉴于这些要求,我将维护两个单独的实体,并将公共字段推入映射的超类中:
@MappedSuperclass
public abstract class AbstractEmployee {
@Id
@Column(name = "EMPLOYEENUMBER")
private String employeeNumber;
@Column(name = "EMPLOYEENAME")
private String employeeName;
@Column(name = "DEPARTMENT")
private String dept;
// Constructor, getters, setters
}
@Entity
@Table(name = "V_EMPLOYEES")
public class ReadOnlyEmployee extends AbstractEmployee {
}
@Entity
@Table(name = "EMPLOYEES")
public class Employee extends AbstractEmployee {
// Extra mappings here
}