Jpa @OneToOne是否意味着独特性?
我只使用@OneToOne注释了我的字段,当我检查数据库(使用liquibase生成)时,发现数据库列上有唯一的约束 这是否意味着@OneToOne本身就意味着独特性,例如一栋建筑只能在一个城市中,而其他建筑不能在同一个城市中 当我想告诉大家同一个城市可能还有其他建筑时,我该怎么办Jpa @OneToOne是否意味着独特性?,jpa,liquibase,Jpa,Liquibase,我只使用@OneToOne注释了我的字段,当我检查数据库(使用liquibase生成)时,发现数据库列上有唯一的约束 这是否意味着@OneToOne本身就意味着独特性,例如一栋建筑只能在一个城市中,而其他建筑不能在同一个城市中 当我想告诉大家同一个城市可能还有其他建筑时,我该怎么办 添加@JoinColumn(unique=false) 仅使用@JoinColumn(unique=false)而不使用@oneToOne 还是使用@ManyToOne 或者不做任何注释 我不想将Building
- 添加@JoinColumn(unique=false)
- 仅使用@JoinColumn(unique=false)而不使用@oneToOne
- 还是使用@ManyToOne
- 或者不做任何注释
class Building {
@OneToOne(optional = false)
City city;
}
class Building {
@OneToOne(optional = false)
@JoinColumn(unique = false)
City city;
}
class Building {
@JoinColumn(unique = true)
City city;
}
class Building {
@ManyToOne
City city;
}
说明:对于双向一通关系(2.10.1双向一通关系):
假设:
- 实体A引用实体B的单个实例
- 实体B引用实体a的单个实例
- 实体A被指定为关系的所有者
- 实体A映射到名为A的表
- 实体B映射到名为B的表
- 表A包含表B的外键。[……]外键列的类型与表B的主键相同,并且有一个唯一键约束
- 实体A映射到名为A的表
- 实体B映射到名为B的表
- 表A包含表B的外键。[……]外键列的类型与表B的主键相同,并且有一个唯一键约束
如果你有一个城市建筑关系,那么对于任何一个合理的城市来说,这将是一个一对一的关系,因为一个给定的城市可以有多个建筑,但一个给定的建筑只能在一个城市中。单向@ManyToOne应该可以很好地工作。而写@OneToOne@JoinColumn(unique=false)显然是错误的?是的,这是一个矛盾