我的主要问题是删除(+持久)实体:
我有一个实体Property
,它有几个PropertyAttributes
- 按列表管理,即
@OneToMany(mappedBy = "property", cascade = { CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH })
@JoinFetch(value = JoinFetchType.INNER)
private List<PropertyAttribute> propertyAttribute;
PropertyAttribute
中的我也有Property
的引用,即
@Id
@JsonIgnore
@JoinColumn(name = "property_id")
@ManyToOne(cascade = { CascadeType.MERGE })
private Property property;
当我想删除某些属性时出现主要问题,例如
getEntityManager().remove(attrEntity);
因为在实体中找不到。如果我介绍一些像
这样的代码if (!getEntityManager().contains(attrEntity)) {
attrEntity = getEntityManager().merge(attrEntity);
}
System.out.println(getEntityManager().contains(attrEntity)); //==> always false
我不清楚为什么merge()
对整体没有影响。任何想法要检查什么或改变什么?
另外:我尝试了解决方法从PropertyAttribute
本身和Property
删除merge(myChangedProperty)
但删除的属性不会保留,即仍在数据库中