我目前在使用 OneToMany/ManyToOne-Mapping 时遇到问题。映射如下所示:
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,一切正常,但反向根本不起作用。关系始终为空。
A objectA = findAById(id);
B objectB = objectA.getB(); // OK
// But... for example
objectB.getAs(); // returns null
我编写了一个小查询来使用对象 B 的主键获取所有 As:
SELECT as FROM B b, IN(b.as) as WHERE b.id = :id
这非常有效,我得到了预期的结果。我也检查了数据库中保存的内容,没关系。有没有人知道为什么这种关系只在一个方向上起作用?
问候,
亚历克斯