我有一个抽象类TreeNode。我从他那里继承了课程Country和Location。然后我有一个Role包含预定义角色(如管理员、用户等)的类。这两个类在MappedRole该类中映射在一起。mappedRole 的数据库表有列 treenode_id role_id 和 mappedRole_id。数据库中的表看起来很像我有一个国家和位置表,因为我使用Table_per_Class. 因此,表 MappedRole 没有用于国家和位置的外键。mappedRole 中的 treenode_id 列包含其映射到的类的 ID。JPA 获得与两个表上的大连接的关系。
这是我的 MappedRole 类:
@Table(uniqueConstraints = { @UniqueConstraint(columnNames = { "TREENODE_ID", "ROLE_ID" }) }, name = "mappedrole")
@NamedQueries({ @NamedQuery(name = "mappedRole.checkIfUserExist", query = "SELECT count(mr.role) FROM MappedRole mr WHERE mr.role =?1") })
public class MappedRole implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
@ManyToOne(cascade = { CascadeType.REMOVE }, fetch = FetchType.EAGER)
@JoinColumn(name = "TREENODE_ID", nullable = false)
private TreeNode treeNode;
@ManyToOne(cascade = { CascadeType.MERGE, CascadeType.REMOVE, CascadeType.REFRESH }, fetch = FetchType.EAGER)
@JoinColumn(name = "ROLE_ID")
private Role role;
树节点类:
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public abstract class TreeNode extends Observable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
protected long id;
和位置类:
@Entity
@Table(name = "standort")
@NamedQuery(name = "standort.findAll", query = "SELECT s FROM Standort s order by s.name desc")
public class Standort extends TreeNode implements Comparable<Standort>, Serializable {
如果我现在删除一个位置,即使我有 .mappedRole 也不会被删除CascadeType.REMOVE。如何让 jpa 将位置的删除操作级联到 mappedRole 表?
蓝山帝景
相关分类