相关疑难解决方法(0)

Hibernate:将基类的实例更改为子类

我想将一个具体的超类更改为其子类之一.我在下面列举了一个例子:

@Entity
@Table(name = "employees")
@Inheritance(strategy = InheritanceType.JOINED)
public class Employee {

    @Id
    @Column(name = "id")
    private String id;

    public Employee( String id ) {
        this.id = id;
    }
 ...
}

@Entity
@Table(name = "managers")
@PrimaryKeyJoinColumn(name = "id", referencedColumnName = "id")
public class Manager extends Employee {

    public Manager( String id ) {
        super(id);
    }
 ...
}


@Entity
@Table(name = "history")
public class History {
 ...
/**
 * 
 */
@ManyToOne
@JoinColumn(name = "employee_id")
private Employee employee;
 ...
}
Run Code Online (Sandbox Code Playgroud)

我正在使用的三个班级是员工,经理和历史.所有经理都是员工,但并非所有员工都是经理.所有员工(和经理)都有历史记录.员工可能会晋升为管理层.发生这种情况时,应通过保持员工ID相同来保留员工的历史记录.这样可以轻松找到经理人的就业历史.

由于数据库受到限制,实施促销操作变得复杂:数据库不允许删除旧的Employee并创建具有相同ID的新Manager,而不通过级联操作删除所有History对象 …

java hibernate jpa

7
推荐指数
1
解决办法
3166
查看次数

标签 统计

hibernate ×1

java ×1

jpa ×1