gpt4 book ai didi

java - JPA/hibernate : bidirectional OneToMany/ManyToOne relation only works unidirectional

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:08:54 25 4
gpt4 key购买 nike

我目前在使用 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,一切正常,但相反的方向根本不起作用。关系始终为空。

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

这非常有效,我得到了预期的结果。我也检查了数据库中保留的内容,并且没有问题。有人知道为什么这种关系只在一个方向有效吗?

问候,

亚历克斯

最佳答案

那是因为默认情况下@onetomany 具有延迟获取。你可以用这个来解决这个问题fetch = FetchType.EAGER

public class B implements Serializable {
@OneToMany(mappedBy = "id.b", fetch = FetchType.EAGER)
private List<A> as;

// Other stuff...
}

关于java - JPA/hibernate : bidirectional OneToMany/ManyToOne relation only works unidirectional,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16937785/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com