如何实现实体对象中内容字段的延迟初始化?

问题描述 投票:0回答:2

我有两个实体:

User
Post
(一对多关系)。
Post
字段:
id
creationDate
title
content
user

数据存储在数据库中并通过 Hibernate 访问。

我有一个控制器将

Post
对象作为 JSON 传递给 JavaScript。然后就显示在网页上了。但并不总是需要传递所有
Post
字段。

例如,我只需要向用户显示

title
creationDate
,如果用户按下按钮
Show content
,那么我只需要显示
Post
内容(我只想从服务器请求当需要显示时)。

所以这里有一个问题:如何实现

Post
对象中内容字段的延迟初始化?我应该在控制器中编写两种方法:一种用于生成带有
Post
列表的 JSON 并将内容字段设置为
null
或空
String
,另一种仅传递内容字符串?

java javascript json hibernate lazy-loading
2个回答
1
投票

使帖子内容成为对象和数据库中的单个表。

在java中看起来像下面这样:

public class Post {

  ...


  PostContent postContent;
}

1
投票

首先,您可以尝试通过

Hibernate.initialize(lazyCollection)
在 DAO 中初始化惰性集合。如果它不起作用,那么要么使用
FetchType.EAGER
要么在请求期间保持会话打开,并且应该在需要时获取集合。

© www.soinside.com 2019 - 2024. All rights reserved.