1

JSP ページで多対 1 の関係を取得するにはどうすればよいですか? 私は試した

<s:property value="group.division.name" />

しかし、JSPにはデータが表示されませんでした。

缶はGroup1つに属しDivisionます。

public class Group implements java.io.Serializable {
    ..
    private Division division;
    ..

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "div_id", nullable = false)
    public Division getDivision() {
            return this.division;
    }

    public void setDivision(Division division) {
            this.division = division;
    }
}

public class Division implements java.io.Serializable {
    ...
    private String name;
    private Set<Group> groups = new HashSet<Group>(0);

    @Column(name = "name", nullable = false, length = 50)
    public String getName() {
            return this.name;
    }

    public void setName(String name) {
            this.name = name;
    }

    @OneToMany(fetch = FetchType.LAZY, mappedBy = "division")
    public Set<Group> getGroups() {
            return this.groups;
    }

    public void setGroups(Set<Group> groups) {
            this.groups = groups;
    }
}
4

1 に答える 1

2

あなたのせいだと思いますFetchType.LAZY。その部分を削除すると、デフォルトで熱心にフェッチされます@ManyToOne.

EAGER外部結合を使用して関連付けられたオブジェクトを取得しようとしますが、関連付けられたオブジェクトが初めてアクセスされたときにLAZYのみ明示的なステートメントをトリガーします。SELECTここで注意が必要です。これは、トランザクション内でのみ機能し、関連するエンティティをロードするためLAZYに明示的に起動します。SELECTあなたの場合、トランザクションはすでに終了しているようです。したがって、関連するエンティティを取得できません。

この質問をここで読みたいと思うかもしれません。質問と回答の1つで、このことについて簡単に説明しています。

于 2013-11-06T03:16:32.530 に答える