我目前遇到了OneToMany/ManyToOne映射的问题。映射如下:
public class A implements Serializable {
@EmbeddedId
private AId id;
// Other stuff...
}
@Embeddable
public class AId implements Serializable {
@ManyToOne
@JoinColumn(name = "B_ID", nullable = false)
private B b;
// Other stuff...
}
public class B implements Serializable {
@OneToMany(mappedBy = "id.b")
private List<A> as;
// Other stuff...
}
如果我使用对象A访问对象B,一切都正常工作,但反过来则完全不行。关系总是null。
A objectA = findAById(id);
B objectB = objectA.getB(); // OK
// But... for example
objectB.getAs(); // returns null
我写了一个小查询,使用对象B的主键,获取所有A。
SELECT as FROM B b, IN(b.as) as WHERE b.id = :id
这个很好运作,我得到了期望结果。 我也检查了在数据库中持久化的内容,一切都没问题。有人知道为什么这个关联只能单向工作吗?
谢谢, Alex