Java hibernate中的mappedBy是按照模式定义定义的还是逻辑定义的?
我有以下情况: 一个目标可以有多个别名 逻辑上:我希望Destination是这个关系的所有者,因为如果没有Destination,别名就没有任何意义 但是,数据库架构如下所示: DestinationAlias将idDestination作为外键,因此hibernate注释中的@JoinColumn将位于DestinationAlias上:Java hibernate中的mappedBy是按照模式定义定义的还是逻辑定义的?,java,hibernate,jakarta-ee,hibernate-mapping,Java,Hibernate,Jakarta Ee,Hibernate Mapping,我有以下情况: 一个目标可以有多个别名 逻辑上:我希望Destination是这个关系的所有者,因为如果没有Destination,别名就没有任何意义 但是,数据库架构如下所示: DestinationAlias将idDestination作为外键,因此hibernate注释中的@JoinColumn将位于DestinationAlias上: @ManyToOne(fetch=FetchType.LAZY, cascade={CascadeType.ALL}) @JoinColumn(
@ManyToOne(fetch=FetchType.LAZY, cascade={CascadeType.ALL})
@JoinColumn(name="IDDESTINATION", nullable=false)
public Destination getMainCity() {
return mainCity;
}
目的地:
@OneToMany(fetch=FetchType.LAZY, cascade={CascadeType.ALL}, mappedBy = "mainCity")
public Set<DestinationAlias> getAliases() {
return aliases;
}
根据此定义,DestinationAlias是此关系的所有者,因为mappedBy
是目标类的属性
hibernate是否要求我遵循
数据库模式
并将实体标记为关系的所有者,或者是否可以基于逻辑
原因进行此操作?所有权会影响hibernate对基础数据库表建模的方式。如果省略mappedBy属性,hibernate将在Destination和DestinationAlias之间生成一个连接表(类似于M-M关系),而不是一个简单的连接列。除此之外,我很好奇你的实际问题是什么。这纯粹是装饰性的,还是功能性的问题在起作用
编辑:由于这似乎是一个纯粹的装饰性问题,我的建议是接受Hibernate语义。虽然我同意Hibernate称其为“所有者”似乎有悖常理,但这只是Hibernate确定的术语。它也不是唯一的,它来自于“所有者”是联接列所在的概念
不要浪费时间强迫hibernate符合您的定义,如果您不需要的话。我当前的问题是,Destination是这个关系的所有者,从语义上讲,我希望Destination是所有者。否则代码可以正常工作。