Java 在JSP中获取多对一hibernate

Java 在JSP中获取多对一hibernate,java,hibernate,jsp,Java,Hibernate,Jsp,如何在JSP页面中获取多对一关系?我试过了 但是JSP上没有显示任何数据 组可以属于一个部门 public class Group implements java.io.Serializable { .. private Division division; .. @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "div_id", nullable = false) public Di

如何在JSP页面中获取多对一关系?我试过了

但是JSP上没有显示任何数据

可以属于一个
部门

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;
    }
}

公共类划分实现java.io.Serializable{
...
私有字符串名称;
私有集组=新哈希集(0);
@列(name=“name”,null=false,长度=50)
公共字符串getName(){
返回此.name;
}
公共void集合名(字符串名){
this.name=名称;
}
@OneToMany(fetch=FetchType.LAZY,mappedBy=“division”)
公共集getGroups(){
返回此项。分组;
}
公共void集合组(集合组){
这个组=组;
}
}

我想,这是因为你的
FetchType.LAZY
。如果我没弄错的话,删除那个部分,它会在默认情况下急切地获取它——很长时间没有接触Hibernate,因为它的
@manytone

EAGER
将尝试使用外部联接检索关联对象,而
LAZY
仅在第一次访问关联对象时触发显式的
SELECT
语句。现在,这里有一个警告,
LAZY
东西只会起作用,并触发显式的
SELECT
来加载事务中的相关实体。在你的情况下,交易似乎已经结束;因此,它无法检索相关实体


您可能想阅读,它在问题和答案之一中简要地讨论了这件事。

那么应该是
FetchType.EAGER
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;
    }
}