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 of
update()

此处为您提供的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也会导致此异常。