【问题标题】:How to use @OnetoMany with Embeddedid如何将 @OnetoMany 与 Embeddedid 一起使用
【发布时间】:2019-08-21 05:27:06
【问题描述】:

我正在研究休眠并将映射与@OneToMany 关系与复合键相关联。 以下是我目前使用的实体。

@Embeddable
@Getter
@Setter
public class AddressKey implements Serializable {

    private static final long serialVersionUID = -307823488229761699L;

    @Column(name = "id")
    private Long id;

    @Column(name = "city")
    private Long city;

    @Column(name = "locale")
    private String locale;

    @Column(name = "type")
    private String type;

    @ManyToOne
    @JoinColumn(name="id")
    private Person person;
}

@Entity
@Table(name = "address", schema = "test")
@Setter
@Getter
public class AddressHistory {

    @EmbeddedId
    private AddressKey key;

    @Column(name = "active")
    private boolean active;

    @Column(name = "current")
    private boolean current;

}


@Entity
@Table(name = "person", schema="test")
@ToString
public class Person {

    @Id
    @Column(name = "id")
    private Long id;

    @OneToMany(mappedBy="key.person", fetch=FetchType.EAGER, cascade=CascadeType.ALL)
    private Set<AddressHistory> addressHistory;
}

但是当我试图运行这个程序时,它给了我以下错误。

实体 AddressHistory 映射中的重复列。

有人帮我解决这个映射中的问题。 在此先感谢

【问题讨论】:

标签: java hibernate


【解决方案1】:

您重复了列。删除 AddressKey 中的 @JoinColumn(name="id"),因为您已经有一个同名的列,或者将其重命名为其他更易于维护的名称,例如 person_id。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-25
    • 2016-09-06
    • 1970-01-01
    • 1970-01-01
    • 2021-12-27
    • 2023-03-12
    • 2017-10-14
    • 1970-01-01
    相关资源
    最近更新 更多