我无法使用Hibernate JPA嵌入使cascase删除在Java EE容器管理的应用程序中工作。我们将不胜感激。我有一个实体‘公司',与其他实体有四个任何关系。当测试应用程序(使用Arquillian框架)时,我无法使级联删除工作;公司实体被删除,删除后子实体仍然存在。我读到了这里:JPA和Hibernate Cascade DELETE OneToMany不起作用,这可能是一个测试问题,所以我读到了这里关于这个主题的每一篇文章,并尝试了每一种可能性,我现在认为这可能与Arquillian测试框架和测试部署中(没有)加载的类有关。
我的公司实体如下所示:
public class CompanyEntity implements Serializable {
private static final long serialVersionUID = 2L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@NotNull
private String name;
@NotNull
private String companyCode;
@OneToMany(targetEntity = ContactInfoEntity.class, cascade = CascadeType.REMOVE, orphanRemoval = true)
private List<ContactInfoEntity> contactInfo;
@OneToMany(targetEntity = AddressEntity.class,cascade = CascadeType.REMOVE, orphanRemoval = true)
private List<AddressEntity> addresses;
@OneToMany(targetEntity = ConnectionInfoEntity.class,cascade = CascadeType.REMOVE, orphanRemoval = true)
private List<ConnectionInfoEntity> connectionInformation;
@OneToMany(targetEntity = PreferenceEntity.class,cascade = CascadeType.REMOVE, orphanRemoval = true)
private List<CompanyPreferenceEntity> preferences;
}
而我的实体都是这样定义的:
public class AddressEntity implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@NotNull
@Size(min = 2)
private String country;
@NotNull
@Size(min = 2)
private String city;
private String zipCode;
private String street;
private boolean isPrimaryAddress;
}
delete函数执行以下操作:
提前道谢!
您需要提供@joincolumn
注释来指示关系的所有者:
@OneToMany(targetEntity = ContactInfoEntity.class, cascade =
CascadeType.REMOVE, orphanRemoval = true)
@JoinColumn(name="company_id")
private List<ContactInfoEntity> contactInfo;
有关这种映射的更多信息,请访问:https://en.wikibooks.org/wiki/java_persistence/onetomany#unidirectional_onetomany,_no_inverse_manytoone,_no_join_table_(jpa_2.x_only)
我一直在阅读一篇又一篇的帖子和文章,试图让级联删除在最新的Spring Boot版本中与JPA/Hibernate配合使用。我读过你必须使用Hibernate特定的级联,我读过你不需要。我读过它们就是不起作用,但它似乎是一个混合体。我尝试过的一切都不起作用。这种关系是双向的。 不工作: 不工作: 在删除品牌之前,除了删除税率之外,还有什么其他方法有效吗? 我的测试如下所示: 参考错误: 原因:or
我有两个实体业务,由一个部门列表组成。 当我尝试删除一个业务实例时,我得到一个Mysql异常 无法删除或更新父行:外键约束失败(
我读过一些相关的问题,但它们和我的问题不完全一样。 我使用的是JPA Hibernate Spring,我想做一些我不确定是否仅通过配置就可以做到的事情。 我的域类具有或多或少复杂的关系。有许多元素与一个元素相关(就像是一棵树,许多元素是一个元素的子元素)。 类似的东西: 这样会得到一张桌子: 当我删除id=1的行时,我希望删除id=2和id=3的行(这可能是递归的,parent_id=2并且pa
我使用的是Hibernate的JPA实现。我有一个包含不同类型用户(私有、公共等)的用户表,user_type列指定用户的类型。 我有一个User类,它是一个表示User表的实体。我补充说 在我的用户类上创建了两个类,PrivateUser和PublicUser,它们都用相应的@DiscriminatorValue扩展了用户类。 如果我的解释不清楚,请让我知道。 提前致谢
编辑:修改问题以更好地反映问题。此处最初发布的问题 我有一个父实体(< code >上下文)和一个子实体(< code >用户)。父级上的级联“删除”不会删除子级。代码如下:
主要内容:JPA级联删除示例,输出结果级联移除用于指定如果父实体被移除,则其所有相关实体也将被移除。 以下语法用于执行级联删除操作 - JPA级联删除示例 在这个例子中,我们将创建两个相互关联的实体类,但要建立它们之间的依赖关系,我们将执行级联操作。 这个例子包含以下步骤 - 第1步: 在包下创建一个名为的实体类,其中包含属性:,,以及标记为级联规范的类型的对象。 文件: StudentEntity.java - 第2步: 在包下创建