gpt4 book ai didi

java - Hibernate LazyInitializingException

转载 作者:行者123 更新时间:2023-12-01 12:23:36 25 4
gpt4 key购买 nike

例如,我有 2 节课。第一个

@Entity
@Table(name = "employee")
public class Employee implements Serializable{

@ManyToOne
@JoinColumn(name = "office_address_id")
private Address address;

//setters and getters
}

第二个:

@Entity
@Table(name = "address")
public class Address implements Serializable{

@OneToMany(mappedBy = "address")
private List<Employee> employeeList;

//setters and getters
}

因此,如果我想从数据库中读取Employee,我会读取address字段。 Address 具有带有 LazyInitializingException 的 employeeList但我不想知道employeeList。我只想知道employee.getAddress()。我想发送 JSON 对象 Employee。但在客户端,由于 LazyInitializingException ,我无法加载资源:服务器响应状态为 500(内部服务器错误)

我可以使用:

<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="persistenceUnitName" value="myPersistenceUnit"/>
<property name="packagesToScan" value="com.itechart.model"/>
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="databasePlatform" value="org.hibernate.dialect.MySQL5InnoDBDialect"/>
<property name="showSql" value="false"/>
<property name="generateDdl" value="true"/>
</bean>
</property>
<!-- USE--!>
<property name="jpaProperties">
<props>
<prop key="hibernate.enable_lazy_load_no_trans">true</prop>
</props>
</property>
<!-- END USE--!>
<property name="persistenceProvider">
<bean class="org.hibernate.jpa.HibernatePersistenceProvider"></bean>
</property>
</bean>

最佳答案

您的 JSON 映射器可能会在 hibernate session 关闭后访问 Address.employeeList。这就是它发送 LazyInitializingException 的原因。

您可以尝试以下任一解决方案来解决该问题。

1 ) 从 JSON 映射中排除 employeeList

Jackson中,我们可以添加@JsonIgnore

@JsonIgnore
public List<Employee> getEmployeeList() {
}

2 ) 在将 employeeList 发送到 JSON 映射器之前初始化它。

您可以通过调用employeeList.size()方法来实现

3)您可以将 fetchType 更改为 eager,如下所示

@OneToMany(mappedBy = "address", fetch = FetchType.EAGER) 
private List<Employee> employeeList;

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

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