Java 用于显示和CRUD操作的实体类

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

我正在使用Hibernate4.1.0和JPA2.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_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实体类中添加它们?你能在回答中举例说明一下吗?