简体   繁体   English

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

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

I have two entities which is giving me error on creation of datasource我有两个实体在创建数据源时给我错误

Entity1实体 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;
}

Entity 2 |实体 2 | EDIT 1编辑 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;

}

Getting error as below:得到如下错误:

I am getting error as "No identifier specified for entity: AddressDetails".我收到错误消息“没有为实体指定标识符:AddressDetails”。

How to resolve in such case?遇到这种情况如何解决? Can we use spring data jpa having OneToMany mapping in such case where one entity do not have primary key ?在一个实体没有主键的情况下,我们可以使用具有 OneToMany 映射的 spring 数据 jpa 吗?

The error you are getting is because you are using the same column name for 2 different columns.您收到的错误是因为您对 2 个不同的列使用了相同的列名。

@Id
private String pid;

and

@JoinColumn(name = "pid"

means that you want both your id column and your foreign key column to be named "pid", hence the error.意味着您希望您的 id 列和外键列都被命名为“pid”,因此出现错误。 I would suggest using a name like "addressDetailsFk" for the JoinColumn attribute.我建议为 JoinColumn 属性使用像“addressDetailsFk”这样的名称。

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

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