Java 找到同一集合异常的两个表示形式?
您好,我有以下代码:Java 找到同一集合异常的两个表示形式?,java,hibernate,Java,Hibernate,您好,我有以下代码: @Entity public class VirtualMeasure extends AbstractMeasure implements Record { @OneToMany(fetch = FetchType.LAZY, cascade = {CascadeType.REMOVE}, mappedBy = "virtualMeasureMyActionId.virtualMeasure") @Access(AccessType.FIELD) private Se
@Entity
public class VirtualMeasure extends AbstractMeasure implements Record {
@OneToMany(fetch = FetchType.LAZY, cascade = {CascadeType.REMOVE}, mappedBy
= "virtualMeasureMyActionId.virtualMeasure")
@Access(AccessType.FIELD)
private Set<VirtualMeasureMyAction> vmMyAction;
}
@Entity
@AssociationOverrides({
@AssociationOverride(name = "virtualMeasureMyActionId.virtualMeasure",
joinColumns = @JoinColumn(name = "virtualMeasureId")),
@AssociationOverride(name = "virtualMeasureMyActionId.myAction",
joinColumns = @JoinColumn(name = "myActionId")) })
public class VirtualMeasureMyAction implements Record {
/**
* virtualMeasureViewId : VirtualMeasureViewId
*/
@EmbeddedId
private VirtualMeasureMyActionId virtualMeasureMyActionId;
}
@Embeddable
public class VirtualMeasureMyActionId implements Record {
@ManyToOne(fetch=FetchType.LAZY)
private VirtualMeasure virtualMeasure;
@ManyToOne(fetch=FetchType.LAZY)
private MyAction myAction;
}
@实体
公共类VirtualMeasure扩展了AbstractMeasure实现记录{
@OneToMany(fetch=FetchType.LAZY,cascade={CascadeType.REMOVE},mappedBy
=“virtualMeasureMyActionId.virtualMeasure”)
@访问权限(AccessType.FIELD)
私有集vmMyAction;
}
@实体
@联想超越({
@AssociationOverride(name=“virtualMeasureMyActionId.virtualMeasure”,
joinColumns=@JoinColumn(name=“virtualMeasureId”),
@AssociationOverride(name=“virtualMeasureMyActionId.myAction”,
joinColumns=@JoinColumn(name=“myActionId”))}
公共类VirtualMeasureMyAction实现记录{
/**
*VirtualMeasureReviewId:VirtualMeasureReviewId
*/
@嵌入ID
私有VirtualMeasureMyActionId VirtualMeasureMyActionId;
}
@可嵌入
公共类VirtualMeasureMyActionId实现记录{
@manytone(fetch=FetchType.LAZY)
私人虚拟测量虚拟测量;
@manytone(fetch=FetchType.LAZY)
私人行动;
}
在我运行的地方,我得到了以下错误[create]:javax.persistence.PersistenceException:org.hibernate.hibernateeException:找到了同一集合的两个表示形式:vmMyAction问题是hibernate会话在持久化时检测到同一会话中有两个相同的集合
注意不要在您的实体中重复setter和getter,并使用
merge()
intead ofupdate()
此处为您提供的vmMyAction@OneToMany(mappedBy)
和@Access
两者。这是Hibernate在异常中告诉您的两种表示。Hibernate不能同时支持这两种功能
@OneToMany(fetch = FetchType.LAZY, cascade = {CascadeType.REMOVE}, mappedBy
= "virtualMeasureMyActionId.virtualMeasure")
@Access(AccessType.FIELD)
private Set<VirtualMeasureMyAction> vmMyAction;
@OneToMany(fetch=FetchType.LAZY,cascade={CascadeType.REMOVE},mappedBy
=“virtualMeasureMyActionId.virtualMeasure”)
@访问权限(AccessType.FIELD)
私有集vmMyAction;
由于根据,
@Access
现在不推荐用于字段
,请在不使用@Access
注释的情况下尝试上面的操作。但是create@AbdelmajidBahmed您从AbstractMeasure
中获得了哪些方法?或者AbstractMeasure
是否也实现了Record
?如果是这样,重复的getter和setter也会导致此异常。