我定义了具有@OneToOne双向关系的实体。
关系的所有者站点(子类):
@OneToOne
@JoinColumn(name = "owner_id")
private Parent parent;
其他站点(父类):
@OneToOne(mappedBy = "parent")
private Child child;
当我试图坚持有子集的父母(不坚持),然后我得到了例外
这看起来可以理解。
但当我定义具有双向一对一/多对一关联的实体时,如:
此关系的所有者站点:
@ManyToOne
@JoinColumn(name = "owner_id")
private Parent parent;
关系的另一面:
@OneToMany(mappedBy = "parent")
private Set<Child> childrens = new HashSet<>();
并尝试持久化具有子集合集(未持久化)的父集合,然后我可以执行此操作并Hibernate仅持久化父集合。
对我来说,这看起来很奇怪,因为这种行为不是确定性的——我知道这个例子是不正确的,我可以使用CascadeType。ALL或正确地坚持它。你知道为什么它看起来那样吗?Hibernate使用不同的算法将实体持久化在@OneToOne/@OneTo多项关系中
如果在@OneToMany
上使用cascade=PERSIST
,您应该会看到相同的错误。不同之处在于,Hibernate不尝试“管理”*——相反方向上的许多关联,即存在mappedBy
的地方。
问题内容: 我正在为我的实习工作开发JPA兼容套件…该套件的一部分涉及测试极端情况的正确实现。 具有mapedBy属性。JPA指出: 字符串mappingBy-拥有关系的字段或属性。除非关系是单向的,否则为必需。 没有给出默认值-默认列为空。 给定双向-此示例来自JPA 2.0 JSR-317规范本身! 顾客 电话号码 尚未在of的中定义mapledBy属性!我不知道的双向映射有默认值吗? 我查看
我有三个班,站点,GoupIP和IP 一个站点有一个或多个抱怨。GroupIP有一个或多个IP。 代码如下: 地点 群居 IP 在GroupIp课堂上,我得到: 在属性“ips”中,“映射者”值“groupip”无法解析为目标实体上的属性。 我的代码出了什么问题??
问题内容: 假设我有两个实体: 然后,我要保留“客户”实体,然后,参照先前添加的“客户”保留“订单”实体。当我从数据库中检索此客户并调用getOrders时,它将返回空集。这是正常行为吗?如果是,当我添加新的Order实体时,我该怎么做以自动刷新此集合? 问题答案: Jpa不会为您维护关系,因此应用程序需要设置双向关系的两端,以使它们与数据库保持同步。当您设置了order-> customer关系
问题内容: 假设我有个人 和工作 提取时,我无法将Person和Job映射到其他实体。 我在做什么错? 问题答案: 您的代码应为: (尝试从工作中删除重复的列’person_id’) 或其他共享主键的方法:
我有以下三个实体: 人 客户端具有个人id外键和区域id外键。一个人可以有很多客户,每个客户都属于一个地区。我正在尝试使用Laravel中的单个查询获取一个人的客户列表以及每个客户的区域。我曾经亲自与客户建立过很多关系,这很好。我正在尝试使用hasManyThrough方法来查询一个人,并获取他的客户和他们所在的地区,但我无法让它工作!我的关系设置为: 人有很多客户 客户属于区域 人已通过(客户,
问题内容: 我很长一段时间以来一直遇到这个问题,我已经在网上和网上搜索了SO,但尚未找到解决方案。我希望你能在这方面帮助我。 我在两个实体之间有一个父子关系,如下所示: 关键是,当我创建一个新的子代并将其分配给父代时,父代已经在缓存中时不会更新。 我尝试使用@PreUpdate在持久保留子级时将其自动添加到父级,但是如果我们在2个不同的线程中有2个实体管理器(例如在JBoss中),问题仍然存在,直