0
我有哪几种PropertyAttributes
实体Property
- 管理的名单,即JPA - 一对多奋斗
@OneToMany(mappedBy = "property", cascade = { CascadeType.ALL}, fetch = FetchType.EAGER)
@JoinFetch(value = JoinFetchType.INNER)
private List<PropertyAttribute> propertyAttribute;
在
PropertyAttribute
我也一样给Property
参考,即
@Id
@JsonIgnore
@JoinColumn(name = "property_id")
@ManyToOne
private Property property;
当我保存一个新的Property
,例如id=10400
比额外PropertyAttribute
保存以及具有相同的ID - 如预期。我save()
方法是这样的:
public void save(){
//begin transaction
getEntityManager.persist(newProperty);
// end transaction...
//begin transaction...
getEntityManager.merge(newPropertyAttriubtes);
// end transaction
}
但是当我(现在进行第二轮的save()
与id=10401
然后我得到了奇怪的结果,即:
getEntityManager().find(Property.class,10400)
现已PropertyAttribute
与Property
- id
= 10401从上次保存的记录,即(=错误的内容!)
失败的原因有任何想法第二保存?也许这是一个DB-问题?还是EclipseLink的?
这没有意义。如果外键“property_id”是ID,那么OneToMany中如何使用这种关系? OneToMany意味着有很多propertyAttribute具有相同的ID值,这使得它不是唯一的。 ID应该是不可变的:如果使用的字段是需要更改的字段,则不应将其用作ID。还要确保您不仅仅是改变了您已经传递给JPA进行管理的值。 – Chris
thx的提示,即最后一句 - 这导致正确的轨道:-)保存我的一天。 – LeO