java - 使用延迟加载时 Hibernate List 为空,但在热切加载时它有结果

标签 java mysql hibernate

我有两个实体,一个 User 和一个 Place witch 绑定(bind)了多对多关联。 当我尝试通过 getter 方法获取给定用户的所有位置时,返回一个空列表,但用户绑定(bind)到数据库中的位置,如果我将默认获取策略更改为急切,我可以看到所有位置美好的。 我正在使用 MySQL 来保持持久性。 使用的注解是: 对于用户实体:

@ManyToMany
@JoinTable(name= "USER_PLACE",
joinColumns = {@JoinColumn(name="USER_ID")},
inverseJoinColumns = {@JoinColumn(name="PLACE_ID")}) 
private List<Place> places = new ArrayList<Place>();

对于 Place 实体:

@ManyToMany(mappedBy = "places")
private List<User> users = new ArrayList<User>(0);

这可能是什么原因造成的?

最佳答案

对我来说,这看起来像是您的域模型中的映射问题。提供的实体是否也映射到其他地方?您可能会遇到与其他表的疯狂连接。你能提供所有相关实体吗?此外,Hibernate 为 User.getPlaces() 生成的 SQL 语句也会有所帮助。

关于java - 使用延迟加载时 Hibernate List 为空,但在热切加载时它有结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18602038/

相关文章:

mysql - 如何使用 node.js 上的 mysql2 包使用准备好的查询

java - 在删除数据行之前检查其他表中是否使用了外键 hibernate

mysql - Hibernate、Null 值和 nativeSQL

java - 通过 Swing 按钮停止线程

java - 给出所需输出的消息格式

mysql - 上传MySQL数据库

Mysql触发器在2个表中进行计算?

java - 使用 httpUrlConnection 向服务器发送数据

java - 使用Decoder的addWord方法时出错

java - org.springframework.dao.OptimisticLockingFailureException 与 hibernate 升级