gpt4 book ai didi

java - Hibernate 和 Jersey 中的 LazyInitializationException

转载 作者:行者123 更新时间:2023-12-02 05:58:57 24 4
gpt4 key购买 nike

嗨,我正在使用 Hibernate 和 Jersey 做一个项目。

在服务层中,我收到“LazyInitializationException”。我对此进行了很多搜索。

我看到了 creating custom AccessorType 的解决方案。但我仍然遇到了异常(exception)。

谁能帮帮我吗?

我将提供更多有关它的详细信息。

Bean:用户

@XmlRootElement
@XmlAccessorType(XmlAccessType.PROPERTY)
@XmlAccessorFactory(XmlAccessorFactoryImpl.class)
public class User {
private String userName;
private String password;
private String email;
private String fname;
private String lname;
private Set<MachineTemplate> machineTemplates;
private String photoUrl;
public User() {
machineTemplates = new HashSet<>();
}
public User(String userName) {
this.userName = userName;
}
public User(String userName, String password, String email, String fname,
String lname) {
this.userName = userName;
this.password = password;
this.email = email;
this.fname = fname;
this.lname = lname;
this.machineTemplates = new HashSet<>();
}

public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getFname() {
return fname;
}
public void setFname(String fname) {
this.fname = fname;
}
public String getLname() {
return lname;
}
public void setLname(String lname) {
this.lname = lname;
}

public Set<MachineTemplate> getMachineTemplates() {
return machineTemplates;
}

public void setMachineTemplates(Set<MachineTemplate> machineTemplates) {
this.machineTemplates = machineTemplates;
}

public String getPhotoUrl() {
return photoUrl;
}
public void setPhotoUrl(String photoUrl) {
this.photoUrl = photoUrl;
}

}

DAO层方法

public User get(String uName) {
Session session = getSessionFactory().openSession();
User u = (User) session.get(User.class, uName);
session.close();
}

服务层方法

@GET
@Path("/{userName}")

@Produces(MediaType.APPLICATION_JSON)
public User getUserInfo(@PathParam("userName") String userName) {
return userHelper.getUser(userName);
}

最佳答案

异常表示您正在尝试加载 session 外的惰性集合。这意味着您需要在使用之前初始化集合对象。初始化应该在实体 setter 方法或 DAO 类中进行。通常不建议在实体的 setter 方法中进行初始化,因为它将实体与 hibernate 框架耦合在一起。所以最好的地方是DAO层。但我这里提到的只是供大家引用。试试这个

public void setMachineTemplates(Set<MachineTemplate> machineTemplates) {

Hibernate.initialize(machineTemplates);
this.machineTemplates = machineTemplates;
}

希望这对您有帮助!

关于java - Hibernate 和 Jersey 中的 LazyInitializationException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22832346/

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