Java 用于显示和CRUD操作的实体类
我正在使用Hibernate4.1.0和JPA2.0 我有一个如下所示的实体类Java 用于显示和CRUD操作的实体类,java,spring,hibernate,jpa,jpa-2.0,Java,Spring,Hibernate,Jpa,Jpa 2.0,我正在使用Hibernate4.1.0和JPA2.0 我有一个如下所示的实体类 @Entity @Table(name = "V_EMPLOYEES") public class Employee { @Id @Column(name = "EMPLOYEENUMBER") private String employeeNumber; @Column(name = "EMPLOYEENAME") private
@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_employeen
是一个视图,我使用它从我的查找表中获取employeename
,并加入employeeno
我使用上面的方法在datatable中显示值,效果很好
我想在用户单击添加按钮和弹出对话框时创建一个新的员工记录
其中用户输入employeenumber
,employeestatus
,employeedepartment
等
由于我在我的实体
类中使用视图
,如果我想创建一个新的员工记录,我应该创建一个可更新的数据库视图
,还是创建一个新的实体
类引用到员工
表?如果出于查看目的,我有不属于datatable的列,并且希望用于创建或更新记录,该怎么办
这方面的最佳方法和最佳实践是什么
我正在使用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
}
谢谢你的解决方案。Employee类中的额外映射是指其他实体类中需要的所有列吗?如果我不将变量标注为@Column,则意味着我必须在某些数据库事务中使用该变量?是的,所有员工的额外映射都会进入该类。我不明白你的第二个问题。在ReadOnlyEmployee类中,我如何引用employeeNumber、employeeName等?你可以通过它们的getter/setter引用它们,这些getter/setter将从mapper超类继承。我的疑问是,我是否需要在ReadOnlyEmployee实体类中添加它们?你能在回答中举例说明一下吗?