持久化OneToMany列表未在持久化时更新



我有一个CategoriesPosts实体和表。我正在保存一个新的Post,它正在成功地添加到数据库中,但对象似乎没有添加到加载的类别列表中。

分类:

@OneToMany(fetch=FetchType.LAZY, mappedBy="categories")
public List<Post> getPosts() 
{
    return this.posts;
}

要将新帖子添加到数据库中,我只需执行以下操作:

Post newPost = new Post(..);
entityManager.persist(newPost);

因此,新帖子被添加到数据库中,但似乎Categories拥有的帖子列表在我重新启动服务器或等待几分钟之前不会更新。。这就是我获取类别的方式:

Category category = entityManager.find(Category.class, id);

然后我从getPosts() 得到帖子列表

根据提供的信息,您有一个单向关系:

Category --> * Post

为了使此场景正常工作,您需要在创建和持久化Post:时访问Category

Category category = ...;
Post newPost = new Post(..);
category.getPosts().add(newPost);
entityManager.persist(newPost);
category = entityManager.merge(category);   // may not be needed if category is already managed

如果是双向关系,那么您还需要:

newPost.setCategory(category);

在CCD_ 4之前。

最新更新