gpt4 book ai didi

java - 收到 org.hibernate.MappingException : Duplicate property mapping

转载 作者:行者123 更新时间:2023-12-01 12:05:24 27 4
gpt4 key购买 nike

我正在尝试使用 Spring JPA 构建应用程序级 View 。我也在使用 lombok。

现有客户端已在使用此 Web 服务,目前无法更改。我们有一个新客户现在需要相同的数据甚至更多。所以我想这可以可以说,可以通过应用程序级别 View 来解决。

问题的基本范围是我有 3 个实体:A、B 和 C。

A和C是指向同一个表的实体。 C 比 A 具有更多的属性。
C 和 A 都引用了 B。

@Entity
@Getter
@Setter
@Table(name="Foo", schema="dbz")
public class A {
@Id
@Column(name="FOO_I")
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;

@OneToMany(fetch =FetchType.EAGER, cascade= CascadeType.ALL)
@JoinColumn(name="FOO_I",nullable=false)
private Set<B> items = new HashSet<B>();

@Column(name="X")
private String x;
}

@Entity
@Getter
@Setter
@Table(name="Bar", schema="dbz")
public class B {
@Id
@Column(name="BAR_I")
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;

@Column(name="Y")
private String y;

@Column(name="Z")
private int z;
}


@Entity
@Getter
@Setter
@Table(name="Foo", schema="dbz")
public class C {
@Id
@Column(name="FOO_I")
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;

@OneToMany(fetch =FetchType.EAGER, cascade= CascadeType.ALL)
@JoinColumn(name="FOO_I",nullable=false)
private Set<B> items = new HashSet<B>();

@Column(name="X")
private String x;

@Column(name="MoreData")
private String moreData;

//And much more other data...
}

当我注释掉 C 类上的 @Entity 和 @Table 并重建时,我在验证测试中没有遇到异常。

当我在类 C 上保留 @Entity 和 @Table 注释时,出现以下异常:

原因:org.hibernate.MappingException:在 com.acme.Bar 中发现 _items_FOO_IBackref 的重复属性映射

如果我在 C 中将项目重命名为 bar,则会出现以下异常:

由以下原因引起:org.hibernate.MappingException:实体映射中的重复列:com.acme.Bar 列:FOO_I(应使用 insert="false"update="false"进行映射)

有没有办法让 hibernate 接受由同一个表支持的 2 个与另一个实体相关的 java 类?我不确定我是否在这里遗漏了一些东西,或者这是否是一个框架限制。

最佳答案

您正在使用组件映射,因此请为A类使用@Embedded注释,而不是在此处使用@Entity、@Id和@Table注释是一个有用的链接;

http://www.dzone.com/tutorials/java/hibernate/hibernate-example/hibernate-mapping-component-using-annotations-1.html

关于java - 收到 org.hibernate.MappingException : Duplicate property mapping,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27663209/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com