簡體   English   中英

在JSP中獲取多對一休眠

[英]Fetch many to one hibernate in JSP

如何在JSP頁面中獲取多對一關系? 我試過了

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

但JSP上沒有數據。

Group可以屬於一個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;
    }
}

我認為,這是因為您的FetchType.LAZY 刪除該部分,如果沒有記錯的話,默認情況下它會急切地獲取它-因為它的@ManyToOne很久沒有觸摸Hibernate了。

EAGER將嘗試使用外部聯接來檢索關聯的對象,而LAZY僅在首次訪問關聯的對象時才觸發顯式的SELECT語句。 現在,請注意, LAZY事情將只起作用,並在事務內觸發顯式SELECT來加載相關實體。 在您的情況下,交易似乎已經結束; 因此,它無法檢索相關實體。

您可能想在這里閱讀這個問題 ,它在問題和答案之一中簡要討論了這個問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM