如何在表格中映射OneToMany?

时间:2017-09-19 12:50:24

标签: wordpress hibernate jpa

O-O!

我正在尝试从WordPress数据库映射wp_posts表。我遗漏了信息以简化我的问题:

这是实体:

@Entity
@Table(name = "wp_posts")
@Getter
@Setter
public class WPPosts {

    @Id
    @Column(name = "ID")
    private long id;

    @Column(name = "post_parent")
    private long postParent;

    @OneToMany(targetEntity = WPPosts.class, mappedBy = "postParent")
    List<WPPosts> childPosts;
}

该表的一个例子可能是(再次:简化!):

id --- post_parent
1 ---- null
2 ---- 1
3 ---- 1
4 ---- null

所以id为1的实体应该得到一个大小为2的列表childPosts(包含post 2和3)。

不幸的是,这不起作用。我没有任何异常,但列表保持空白。

1 个答案:

答案 0 :(得分:1)

REPLACE((REPLACE(ATTR([YOUR_FIELD]),"{", "")),"}", "") 应该是指实体,而不是id。您需要mappedBy字段才能使映射生效。

请注意,通过这样的映射,@ManyToOne WPPosts postParent是关系的拥有方,这意味着只有WPPosts.postParent的更改才会被JPA尊重;对WPPosts.postParent的更改将被忽略。

就访问列表而言,您需要确保只访问事务上下文中的列表,或将WPPosts.childPosts声明为@OneToMany。否则,您将获得延迟初始化异常。