我正在使用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;
/ *以上* /
的getter和setter... ..
@Table(name = "V_EMPLOYEES")
此处V_EMPLOYEES
是view
,我使用此employeename
从我的查找表中获取并加入employeeno
。
我使用上面的方法在datatable中显示值,并且工作正常。
当用户单击“添加”按钮和弹出对话框时,我想创建一个新的员工记录
用户输入employeenumber
,employeestatus
,employeedepartment
等等。
当我在我的view
类中使用Entity
时,如果我想创建一个新的员工记录,我应该创建一个可以更新的数据库view
还是创建一个新的Entity
类对Employee
表的引用?如果我的列不是数据表的一部分用于查看目的,我想用于创建或更新记录,该怎么办?
最佳方法和最佳做法是什么?
我使用EntityManager
进行数据提取和持久化(插入,更新和删除)
任何帮助都是非常明确的
答案 0 :(得分:1)
鉴于这些要求,我会维护两个独立的实体,将公共字段推送到映射的超类中:
@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
}