java - 使用 JPA 连接从父实体返回子实体

标签 java hibernate jpa

如何返回与 JPA 中的父级有关系的实体列表?

我有一个 User 实体,它在名为 pets 的属性上具有 @OneToMany 映射。子实体的类型为 Pet。这只是一种单向关系。

如何在 JPA 中编写一个联接来返回给定用户的所有宠物?

最佳答案

所以你有几个选择。

您可以使用以下注释:

@ManyToOne
@JoinColumn

这就是您使用它的方式。

public class User
{
   // your standard fields / columns in database

   @OneToMany  (Fetch can be of eager/ lazy)
   @JoinColumn (name="column to join on", referencedColumnName="column to join on in parent class")
   private List<Pet> pets;
}


public Class Pet
{
   //data fields
}

本质上发生的事情是当您查询用户对象时填充宠物列表。

使用 JPA 查询数据库。

所以我猜测您的用户将有某种 ID,并且宠物表将有某种链接到用户的 ID。

所以我们会执行以下操作

Select * from user  where user_id = ?;

这实际上会给你用户对象

Select * from pet where owner_user_id = ?

这实际上会给您属于该用户的所有宠物。

然后您可以自己填充对象。

我不是 100% 确定你的 table 是什么样子,但我希望从我会做的角度来尝试一下。

关于java - 使用 JPA 连接从父实体返回子实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18517216/

相关文章:

java - android java从sd卡播放wav音频文件

java - map 应用程序在打开时崩溃

Java ExecutorService 获取所有任务的反馈

mysql - 哪些 Hibernate 查询会命中第二层缓存?

java - SQL语法错误异常 : ORA-00932: inconsistent datatypes: expected DATE got BINARY

java - Spring Data JPA - 在没有@Transactional 的情况下获取延迟加载的集合

java - 迁移数据库时如何判断column是Blob

java - Spring、Hibernate、JPA、ManyToOne 添加了 where 子句或 Differentiator 列,但没有继承

hibernate - 使用动态插入和动态更新

java - 没有 id 的 JPA 实体