我正在使用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_EMPLOYEESview,在这里我使用它从查询表中获取employeename并与employeeno联接。

我使用上面的方法在数据表中显示值,并且工作正常。

当用户单击“添加”按钮和一个弹出对话框时,我想创建一个新的员工记录
用户输入employeenumberemployeestatusemployeedepartment等的位置

当我在我的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
}

08-03 14:12