java - Spring data DBRef 延迟加载 REST - 500 服务器错误

标签 java spring mongodb spring-data spring-data-mongodb

我正在将 Spring Data 与 MongoDB 结合使用。

我有以下对象:

@Document(collection = "Notification")
public class Notification {
    @Id
    private String id;
    @DBRef (lazy=true)
    private User sender;
}

当我尝试使用以下方法返回此对象时,我在浏览器控制台中收到 500 错误,并且看不到任何数据。

@RequestMapping(value = "/contactNotifications", method = RequestMethod.GET)
@ResponseBody
public List<Notification> getContactNotifications() {
    List<Notification> notifications = notificationService.findByUser(user.getId());
    return notifications;
}

但是,如果我删除 lazy=true,它似乎确实有效。

如何在使用 lazy=true 时解决此问题?

最佳答案

您需要将lazy 设置为 false,以便在加载时加载与您的实体(用户)关联的所有实体(通知)。发生这种情况是因为它通过使用选择查询来获取您请求的用户,然后通过另一个查询获取与其关联的通知,当惰性为 true 时,该查询会被跳过,因此您必须将惰性设置为 false 或设置获取模式“加入”,这样它就会带来关联的实体。

这个link可能会对您有更多帮助。

关于java - Spring data DBRef 延迟加载 REST - 500 服务器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29884952/

相关文章:

java - 为什么传递给 List 参数的 List<Integer> 上的 add(String) 不抛出异常?

java - 无法编译简单的JFACE程序; java.lang.NoClassDefFoundError

java - 具有回溯法的数独求解算法

java - 如何从 SupplySync 返回对象而不阻塞主线程?

spring - 如何配置 Spring 和 Apache Tiles 定义以从类路径解析 jsps

javascript - Node js Mongodb findOne 不同步工作

Spring Boot : H2 database not saved to file

java - 如何确定ThreadPoolTask​​Executor池和队列大小?

sql - NoSQL 数据库

php - 如何在 Windows 7 上安装 PHP 7 的 MongoDB 驱动程序?