繁体   English   中英

休眠多对多完整性约束违规

[英]Hibernate Many to Many integrity constraint violation

我已经用休眠映射了多对多关系,我遇到了麻烦! 我有3张桌子:

  • 客户-包含有关客户的信息
  • 资源-包含有关资源的信息
  • ClientAccessResource-包含有关客户端可以访问哪些资源的信息!

我的架构

现在,一切正常,除非当我尝试删除引用了“ 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM