gpt4 book ai didi

java - hibernate 不会自动插入连接表

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:44:41 25 4
gpt4 key购买 nike

我正在使用 hibernate 开发一个 java spring mvc 应用程序。我有两个实体 AclAclGroup,这两个实体与连接表有多对多关系。但是,当我保存一个 AclGroup 对象时,hibernate 不会在连接表中插入任何记录,而只是插入到 AclGroup 表中。这是我的类(class)结构:

Acl.java:

public class Acl implements Serializable{

...
@JoinTable(name = "acl_group_acl", joinColumns = {
@JoinColumn(name = "acl_id", referencedColumnName = "id")}, inverseJoinColumns = {
@JoinColumn(name = "acl_group_id", referencedColumnName = "id")})
@ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
private Collection<AclGroup> aclGroupCollection;

public Collection<AclGroup> getAclGroupCollection() {
return aclGroupCollection;
}


public void setAclGroupCollection(Collection<AclGroup> aclGroupCollection) {
this.aclGroupCollection = aclGroupCollection;
}
...
}

AclGroup.java:

public class AclGroup implements Serializable{
...
@ManyToMany(mappedBy = "aclGroupCollection",fetch = FetchType.LAZY)
private Collection<Acl> aclCollection;

public Collection<Acl> getAclCollection() {
return aclCollection;
}


public void setAclCollection(Collection<Acl> aclCollection) {
this.aclCollection = aclCollection;
}
}

这是我保存对象的方式:

AclGroup aclGroup = new AclGroup();
List<Acl> acls = new ArrayList<>();
/*
add some elements to acls
*/
aclGroup.setAclCollection(acls);
/*
hibernate config and opening a session
*/
session.save(aclGroup); //session.persist also did not work

谁能帮我解决这个问题?感谢您的关注。

最佳答案

关联的owner端是Acl。 AclGroup 是相反的一面(因为它有 mappedBy 属性)。 Hibernate 只关心所有者端。

因此,请确保在将 acl 添加到组时将组添加到 acl:无论所有者端是什么,这都会起作用,并且会使您的图形连贯。或者,如果您绝对不想这样做,请将映射注释放在 AclGroup 上,并使 Acl 成为反面。

关于java - hibernate 不会自动插入连接表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28793056/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com