Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java @JoinColumns-实体映射中的重复列_Java_Hibernate_Jpa - Fatal编程技术网

Java @JoinColumns-实体映射中的重复列

Java @JoinColumns-实体映射中的重复列,java,hibernate,jpa,Java,Hibernate,Jpa,我可能只是误解了@JoinColumns是如何工作的,但是当我重用name属性时,我遇到了一个错误。但是name属性不映射到数据库列吗?难道我不能重复使用它吗 我得到一个错误: Repeated column in mapping for entity: data.model.DP column: division 守则: @Column(name = "division", nullable = false) private String division; @ManyToOne(fetc

我可能只是误解了@JoinColumns是如何工作的,但是当我重用name属性时,我遇到了一个错误。但是name属性不映射到数据库列吗?难道我不能重复使用它吗

我得到一个错误:

Repeated column in mapping for entity: data.model.DP column: division
守则:

@Column(name = "division", nullable = false)
private String division;

@ManyToOne(fetch = FetchType.LAZY, optional = false)
@JoinColumns({
    @JoinColumn(name = "division_labeldefintion", referencedColumnName = "labeldefinition"),
    @JoinColumn(name = "division", referencedColumnName = "abbr")
})
private LabelFile divisionLabel;

我试图做的是从一个表(包含
division
列)进行多列联接,并将其与
LabelFile
表联接。

使用JoinColumn注释时,您必须注意,根据两个表/实体之间的关联类型,“name”和“referencedColumnName”属性正在更改它们引用的位置。 查看JPAAPI,或获取更详细的描述

在本例中,“divisonLabel”属性的JoinColumn的“name”属性引用源表/实体,“referencedColumnName”引用LabelFile表/实体中的列。 因此,您试图在源表/实体中有两个“division”列


要使映射工作切换“name”和“referencedColumnName”的值,如果要在映射中重用某个列,应将其标记为
insertable=false updateable=false
,以便Hibernate知道哪个Java引用值是相关的


有关何时使用这些属性的更多信息,请参见本节。

切换这些属性不会改变我从哪个表中抓取数据吗?我希望有一个“division”列,在我的联接中使用“division”,并使用它匹配到“abbr”它也在LabelFile中。它会的,这就是重点。您现在编写它的方式JPA/Hibernate正在尝试创建两个名为“division”的列;一个用于与任何关联无关的纯文本字段;第二个用于作为复合键的一部分。LabelFile属性上方的注释正在当前实体/表内创建新字段/列。注意:请不要以列和表的形式思考,JPA和ORM用于对您隐藏DB并使您使用对象相反。免责声明:我没有写任何代码就输入了这个,所以可能是我忽略了什么。希望不是。但是如果我想让这两个列都可以插入和更新呢?