找到两个相同集合异常的表示?

问题描述 投票:1回答:2

你好,我有以下代码:

@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;
}

在哪里运行我得到这个错误[创建]:javax.persistence.PersistenceException:org.hibernate.HibernateException:找到了两个相同集合的表示:vmMyAction

java hibernate
2个回答
2
投票

问题是,当你持久化时,hibernate会话检测到你在同一个会话中有两次相同的集合。

注意不要在实体中复制setter和getter,并使用merge()update() intead。


0
投票

这里为vmMyAction你提供@OneToMany(mappedBy)@Access两者。这些是Hibernates在异常中告诉你的两种表述。 Hibernate不支持两者。

    @OneToMany(fetch = FetchType.LAZY, cascade = {CascadeType.REMOVE}, mappedBy 
    = "virtualMeasureMyActionId.virtualMeasure")
    @Access(AccessType.FIELD)
    private Set<VirtualMeasureMyAction> vmMyAction;

因为根据documentation@Access现在被弃用为FIELD,尝试上面没有@Access注释。

© www.soinside.com 2019 - 2024. All rights reserved.