Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.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
Jpa @OneToOne是否意味着独特性?_Jpa_Liquibase - Fatal编程技术网

Jpa @OneToOne是否意味着独特性?

Jpa @OneToOne是否意味着独特性?,jpa,liquibase,Jpa,Liquibase,我只使用@OneToOne注释了我的字段,当我检查数据库(使用liquibase生成)时,发现数据库列上有唯一的约束 这是否意味着@OneToOne本身就意味着独特性,例如一栋建筑只能在一个城市中,而其他建筑不能在同一个城市中 当我想告诉大家同一个城市可能还有其他建筑时,我该怎么办 添加@JoinColumn(unique=false) 仅使用@JoinColumn(unique=false)而不使用@oneToOne 还是使用@ManyToOne 或者不做任何注释 我不想将Building

我只使用@OneToOne注释了我的字段,当我检查数据库(使用liquibase生成)时,发现数据库列上有唯一的约束

这是否意味着@OneToOne本身就意味着独特性,例如一栋建筑只能在一个城市中,而其他建筑不能在同一个城市中

当我想告诉大家同一个城市可能还有其他建筑时,我该怎么办

  • 添加@JoinColumn(unique=false)
  • 仅使用@JoinColumn(unique=false)而不使用@oneToOne
  • 还是使用@ManyToOne
  • 或者不做任何注释
我不想将Buildings字段放在city类中,因为我永远不会调用city.getBuildings();。以下任何一项是否需要双向参考

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的主键相同,并且有一个唯一键约束
如果是单向一通关系(2.10.3.1单向一通关系):

以下映射默认值适用:

  • 实体A映射到名为A的表
  • 实体B映射到名为B的表
  • 表A包含表B的外键。[……]外键列的类型与表B的主键相同,并且有一个唯一键约束

如果你有一个城市建筑关系,那么对于任何一个合理的城市来说,这将是一个一对一的关系,因为一个给定的城市可以有多个建筑,但一个给定的建筑只能在一个城市中。

单向@ManyToOne应该可以很好地工作。而写@OneToOne@JoinColumn(unique=false)显然是错误的?是的,这是一个矛盾