英文:
How to get an entity-related object correctly
问题
我大致有以下实体:
public class Article {
private String name;
private Long fileId;
}
正如您所见,它有一个名为 fileId
的字段,其中包含相关文件的 id,该文件也是一个实体。然而,文件不知道任何关于 Article
的信息,所以连接它们的唯一方式是 Article
中的 fileId
字段。因此,它们必须显式地关联起来,以免丢失。现在,要获取关联的文件,我必须为每个 Article
进行单独的数据库查询。也就是说,如果我想获取 10 个 Article
的列表,我需要连续 10 次请求数据库,并根据其 id 获取文件。这看起来非常低效。有什么更好的方法可以做到这一点吗?我使用 jooq
,因此无法使用 JPA
,也无法用文件对象替换 fileId
字段。有什么想法吗?
英文:
I have approximately the following entity:
public class Article {
private String name;
private Long fileId;
}
As you can see, it has a field fileld
that contains the id of the associated file, which is also an entity. However, the file does not know anything about the Article
, so the only thing that connects them is the fileId
field in the Article
. Therefore, they must be explicitly linked so as not to get lost. Now to get a linked file, I have to make a separate query to the database for each Article
. That is, if I want to get a list of 10 Article
s, I need to make a request to the database 10 times and get the file by its id. This looks very inefficient. How can this be done better? I use jooq
, so I can't use JPA
, so I can't substitute a file object instead of the fileId
field. Any ideas?
答案1
得分: 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();
英文:
I'm going to make an assumption that your underlying tables are something like this:
create table file (
id bigint primary key
content blob
);
create table article (
name text,
file_id bigint references file
);
In case of which you can fetch all 10 files into memory using a single query like this:
Result<?> result =
ctx.select()
.from(ARTICLE)
.join(FILE).on(ARTICLE.FILE_ID.eq(FILE.ID))
.fetch();
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论