我有父筛选器
实体和一个方向列表
作为具有@OneTomany
关系的子实体。我尝试使用Hibernatehql
查询删除超过一周的广告,但得到的结果是:
com.mysql.jdbc.exceptions.jdbc4.mysqlintegrityConstraintViolationException:无法删除或更新父行:外键约束失败(gecars
.filters_ads
,constraintfk_gcri6h0918u8o2ybd6yfquk79
外键(ads_id
)引用ads
(id
)
用户:
@Entity
@Table(name="users")
public class User {
...
@OneToMany(fetch = FetchType.LAZY, cascade=CascadeType.ALL, mappedBy="user")
@OrderBy("id")
private Set<Filter> filters = new HashSet<Filter>(0);
...
筛选器:
@Entity
@Table(name="filters")
public class Filter {
...
// I also tried use @OneToMany(CascadeType.REMOVE, orphanremoval=true)
// or @OneToMany(cascade=CascadeType.ALL,orphanRemoval=true)
@OneToMany
private Set<Ad> ads;
...
广告:
@Entity
@Table(name="ads")
public class Ad {
...
private Date insertTime = new Date();
...
DAO删除方法:
public void deleteOldAds(Date date){
String hql = "delete from Ad where insertTime < :date";
session.createQuery(hql).setParameter("date", date).executeUpdate();
}
问题的原因是,如果@OneTomany
关联方是关系的所有者,则使用联接表。
要指定ADS
表中的联接列(外键)用于关联,而不是单独的联接表,只需将关联映射为@JoinColumn
:
@OneToMany
@JoinColumn
private Set<Ad> ads;
我有两个对象实体(用户和电话),它们应该有多对多关系。 使用者JAVA 电话JAVA 现在,我在用户表中添加了两个ID为1和2的用户。然后,我添加一个id为1的手机,并将它们映射到两个用户id(1) 我的用户电话表如下所示: 现在,我想删除一个ID为2的用户。当我尝试这样做时,我得到了一个错误 我的删除脚本: 知道我哪里出错了吗?非常感谢:)
当我试图删除宠物时,我得到了这个错误。这个宠物,有访问(子),但我在宠物实体中定义了CASCADE. ALL。任何想法?错误:无法删除或更新父行:外键约束失败(。 访问类:
问题内容: 进行时: 错误: 这是我的桌子: 问题答案: 照原样,必须先删除Advertisers表中的行,然后才能删除它引用的Jobs表中的行。这个: …实际上与应有的相反。实际上,这意味着您必须在作业表中有一条记录,然后才是广告商。因此,您需要使用: 纠正外键关系后,您的delete语句将起作用。
我试图从MySQL中的多个表中删除记录,但我不断得到一个错误,错误内容为。 这是我正在尝试运行的SQL语句: 我试过在删除级联上执行
关于这个问题有好几篇帖子,但仍然没有找到答案。这是父类Userr。在@OneToMany关系中,我想删除一个特定的子帐户。 现在,当我通过“删除”查询执行此操作时,我得到以下异常。 组织。springframework。刀。InvalidDataAccessApiUsageException:执行更新/删除查询;嵌套的异常是javax。坚持不懈TransactionRequiredExceptio
我还在学习hibernate中的很多东西,以及如何处理hibernate中表与表之间的关系,所以在我的一个项目中,我面临着以下问题: 问题出在哪里? 我想做什么? 我正在尝试删除package实体,但不删除package表中引用的用户 我正在通过packageDAO对package实体调用delete