Java DuplicateMappingException由不同的逻辑列名表示

Java DuplicateMappingException由不同的逻辑列名表示,java,hibernate,jpa,Java,Hibernate,Jpa,我对两个类MasavNew和MasavRow使用OneToMany映射: @Entity @Table(name = "ArgoCHFileHdr") public class MasavNew { @OneToMany(fetch = FetchType.LAZY, mappedBy = "msv",cascade = CascadeType.ALL) @ElementCollection(targetClass=MasavRow.class) private List<Masav

我对两个类MasavNew和MasavRow使用OneToMany映射:

@Entity
@Table(name = "ArgoCHFileHdr")
public class MasavNew  {


@OneToMany(fetch = FetchType.LAZY, mappedBy = "msv",cascade = CascadeType.ALL)
@ElementCollection(targetClass=MasavRow.class)
private List<MasavRow> rows;

@Id
@Column(name = "[Arg.CH.F.Key]", nullable = false)
@GeneratedValue(strategy=GenerationType.IDENTITY)
protected Integer argCHFKey;

}


@Entity
@Table(name = "ArgoCHFileRow")
@DynamicUpdate
public class MasavRow extends IModel {


@ManyToOne(fetch = FetchType.LAZY,optional=true)
@JoinColumn(name="[Arg.CH.F.Key]")
private MasavNew msv;


@Id
@Column(name = "[Arg.CH.F.Key]", nullable = false)
private int argCHFKey;


@Id
@Column(name = "[Arg.CH.L.MNB]", nullable = false)
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Integer argCHLMNB;


@Column(name = "[Erp.Clnt]", nullable = true)
private String erpClnt;


}
如何解决此问题?

删除

@Id
@Column(name = "[Arg.CH.F.Key]", nullable = false)
private int argCHFKey;

因为您可以从msv对象获取密钥。

当我直接使用tableoverride您的getArgCHFKey()方法返回msv.getKey()时,我希望使用此列;我需要通过argCHFKey从ArgoCHFileRow表中检索所有行
@Id
@Column(name = "[Arg.CH.F.Key]", nullable = false)
private int argCHFKey;