如何正确获取实体相关对象

How to get an entity-related object correctly

我大约有以下实体:

public class Article {
    private String name;
    private Long fileId;
}

可以看到,它有一个字段fileld,包含关联文件的id,也是一个实体。但是,该文件对 Article 一无所知,因此唯一连接它们的是 Article 中的 fileId 字段。因此,它们必须显式链接,以免丢失。现在要获得一个链接文件,我必须为每个 Article 对数据库进行单独的查询。也就是说,如果我想得到10个Article的列表,我需要向数据库发出10次请求,通过id获取文件。这看起来效率很低。如何才能做得更好?我使用 jooq,所以我不能使用 JPA,所以我不能用文件对象代替 fileId 字段。有什么想法吗?

我假设您的基础表是这样的:

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();