繁体   English   中英

使用@ManyToOne 映射实体的重复列

[英]Repeated column in mapping for entity with @ManyToOne

我有两个实体在创建数据源时给我错误

实体 1

@NoArgsConstructor
@Entity
@Table(name = "person_details")
public class PersonDetails {
    @Id
    private String pid;

    @Column(name = "first_name")
    private String firstName;

    @Column(name = "last_name")
    private String lastName;

    @Column(name = "exist_flag")
    private String existFlag;

    @OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
    @JoinColumn(name = "pid", nullable = false)
    private List<AddressDetails> addressDetails;
}

实体 2 | 编辑 1

@Data
@NoArgsConstructor
@Entity
@Table(name = "address_details")
public class AddressDetails {

    private String street;

    @Column(name = "address_exist_flag")
    private String addressExistFlag;

    @ToString.Exclude
    @EqualsAndHashCode.Exclude
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "pid", insertable = false, updatable = false)
    private PersonDetails personDetails;

}

得到如下错误:

我收到错误消息“没有为实体指定标识符:AddressDetails”。

遇到这种情况如何解决? 在一个实体没有主键的情况下,我们可以使用具有 OneToMany 映射的 spring 数据 jpa 吗?

您收到的错误是因为您对 2 个不同的列使用了相同的列名。

@Id
private String pid;

@JoinColumn(name = "pid"

意味着您希望您的 id 列和外键列都被命名为“pid”,因此出现错误。 我建议为 JoinColumn 属性使用像“addressDetailsFk”这样的名称。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM