如何正确获取实体相关对象
Posted
技术标签:
【中文标题】如何正确获取实体相关对象【英文标题】:How to get an entity-related object correctly 【发布时间】:2021-02-05 01:07:45 【问题描述】:我大约有以下实体:
public class Article
private String name;
private Long fileId;
如您所见,它有一个字段fileld
,其中包含关联文件的id,它也是一个实体。但是,该文件对Article
一无所知,因此唯一连接它们的是Article
中的fileId
字段。因此,它们必须明确链接,以免丢失。现在要获取链接文件,我必须为每个Article
对数据库进行单独查询。也就是说,如果我想获取 10 个Article
s 的列表,我需要向数据库发出 10 次请求,并通过其 id 获取文件。这看起来非常低效。怎样才能做得更好?我用jooq
,所以不能用JPA
,所以不能用文件对象代替fileId
字段。有什么想法吗?
【问题讨论】:
【参考方案1】:我将假设您的基础表是这样的:
create table file (
id bigint primary key
content blob
);
create table article (
name text,
file_id bigint references file
);
如果您可以使用这样的单个查询将所有 10 个文件提取到内存中:
Result<?> result =
ctx.select()
.from(ARTICLE)
.join(FILE).on(ARTICLE.FILE_ID.eq(FILE.ID))
.fetch();
【讨论】:
以上是关于如何正确获取实体相关对象的主要内容,如果未能解决你的问题,请参考以下文章