0

私はこれらの2つのエンティティを 許可しています

@Entity
@Table(name = "PERMITS")
public class Permit extends AbstractEntity<Long> {
    @ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn(name="USR_ID")
    private User user;

ユーザー

@Entity
@Table(name = "USERS")
public class User extends AbstractEntity<Long> {
    @OneToMany(mappedBy = "user", cascade = CascadeType.ALL)
    @OrderBy("role ASC")
    private List<Permit> permits;

    public List<Permit> getPermits() {
        return permits;
    }

    public void setPermits(List<Permit> permits) {
        this.permits = permits;
    }

    // getters, setters etc ...

それらをロードすると

entityManager.createQuery("SELECT u FROM User u JOIN FETCH u.permits")

または、他のメソッド permit 属性を使用すると、常に null になります。それが PersistentBag であるかどうかは理解できますが、null であり、新しい ArrayList をそれに割り当てるとオーバーライドされないため、休止状態はこの属性で何もしないようです。反対側から (許可証から) 正常に動作します。私がする時

entityManager.createQuery("SELECT p FROM Permit p")

フェッチされたユーザーのすべての許可が表示されます。マッピングの何が問題になっていますか?

4

0 に答える 0