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)。
不幸的是,这不起作用。我没有任何异常,但列表保持空白。
答案 0 :(得分:1)
REPLACE((REPLACE(ATTR([YOUR_FIELD]),"{", "")),"}", "")
应该是指实体,而不是id。您需要mappedBy
字段才能使映射生效。
请注意,通过这样的映射,@ManyToOne WPPosts postParent
是关系的拥有方,这意味着只有WPPosts.postParent
的更改才会被JPA尊重;对WPPosts.postParent
的更改将被忽略。
就访问列表而言,您需要确保只访问事务上下文中的列表,或将WPPosts.childPosts
声明为@OneToMany
。否则,您将获得延迟初始化异常。