[英]Hibernate Many to Many integrity constraint violation
我已经用休眠映射了多对多关系,我遇到了麻烦! 我有3张桌子:
现在,一切正常,除非当我尝试删除引用了“ clients_access_resources”的资源时,它给出了“参照完整性约束违规”。 但是更奇怪的是,如果我删除了一个引用了“ clients_access_resource”的客户端,那么它就可以了,这里没有问题!
客户
@ManyToMany(fetch = FetchType.EAGER, targetEntity=Resources.class)
@JoinTable(name = "clients_access_resources", joinColumns = { @JoinColumn(name = "client_id") }, inverseJoinColumns = { @JoinColumn(name = "res_id") })
public Set<Resources> getClientResources() {
return this.clientResources;
}
资源资源
@ManyToMany(fetch = FetchType.EAGER, mappedBy = "clientResources")
public Set<ClientsBasic> getClientsBasics() {
return this.clientsBasics;
}
资源DAO
public void delete(Resources res) throws HibernateException{
synchronized (this) {
Transaction tx = null;
session = this.sessionFactory.openSession();
tx = session.beginTransaction();
session.delete(res);
tx.commit();
session.close();
}
}
客户DAO
public ClientsBasic save(ClientsBasic client) throws HibernateException {
synchronized (this) {
Transaction tx = null;
session = this.sessionFactory.openSession();
tx = session.beginTransaction();
session.saveOrUpdate(client);
tx.commit();
session.close();
return client;
}
}
我尝试添加“ cascade = CascadeType.ALL”,但是没有用。
谁能帮帮我吗? 谢谢。
客户端getter的resourses类中的by by属性映射使该面成为关系的反面。 为了使这些在关系管理中平等,将其更改为与这样的客户端类中的相同
资源资源
@ManyToMany(fetch = FetchType.EAGER, targetEntity=ClientsBasic.class)
@JoinTable(name = "clients_access_resources",
joinColumns = {@JoinColumn(name ="res_id")},
inverseJoinColumns = {@JoinColumn(name = "client_id")})
public Set<ClientsBasic> getClientsBasics() {
return this.clientsBasics;
}
请注意,列的名称已互换。 我希望这可以解决您的问题
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.