[英]JPA - How to update a collection in a bi-directionnal OneToMany/ManyToOne relation
我有一个这样设计的所有者(类别)和客户(论坛)实体:
类别
...
@OneToMany( fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy = "category" )
@OrderBy( "position" )
private List<Forum> forums;
...
论坛
...
@ManyToOne
@JoinColumn( name = "category" )
private Category category;
private Integer position;
...
在我的Web应用程序中的某个位置,显示论坛列表,并对其中之一执行一些业务操作,例如更改其位置。
我的问题是,更改已很好地保留在数据库中,但未反映在OneToMany映射的collection上 。 因此,当我刷新显示列表的页面时,它不会显示新位置,而是显示前一个位置。
我用来更新元素位置的代码等效于一个简单的em.merge( forum )
。 我读过许多主题,我应该“手动管理”双向关系,否则我将面临此类问题。 这是我的两个问题:
[编辑]我读了这个话题 ,我觉得我的问题与论坛被另一个用于获取列表的会话所更新有关。 我理解正确吗? 是,如何正确处理?
假设您同时设置了对象的两侧(必须这样做!),请尝试禁用eclipselink缓存: <property name="eclipselink.cache.shared.default" value="false"/>
@source http://wiki.eclipse.org/EclipseLink/FAQ/How_to_disable_the_shared_cache%3F
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.