LazyInitializationException使用带Spring HATEOAS的补丁添加
我有一个实体ElementType,它有一组设备代码:LazyInitializationException使用带Spring HATEOAS的补丁添加,spring,rest,lazy-loading,patch,hateoas,Spring,Rest,Lazy Loading,Patch,Hateoas,我有一个实体ElementType,它有一组设备代码: @Entity @Table(name = "ELEMENT_TYPES") public class ElementType extends AbstractEntity<Long> { @OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL) @JoinColumn(name= "ELEM_TYPE_ID") private Set<Equipme
@Entity
@Table(name = "ELEMENT_TYPES")
public class ElementType extends AbstractEntity<Long> {
@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinColumn(name= "ELEM_TYPE_ID")
private Set<EquipmentCode> equipmentCodes;
}
但是,如果我尝试在现有设备代码中添加新设备代码,它似乎工作正常:
[
{
"op": "add",
"path": "/equipmentCodes",
"value": [
"https://localhost:8080/api/equipmentCodes/40529099"
]
}
]
我明白了
org.hibernate.LazyInitializationException:延迟初始化失败
集合,无法初始化代理-没有会话,位于
org.springframework.data.rest.webmvc.json.patch.JsonLateObjectEvaluator.evaluate(JsonLateObjectEvaluator.java:45)
有关于问题所在的提示吗?我使用“add”的方式是否有问题,或者是与Spring配置有关
编辑:这可能是一个错误,像这样我没有得到例外:
[
{
"op": "add",
"path": "/equipmentCodes",
"value": "https://localhost:8080/api/equipmentCodes/40529099"
}
]
然而奇怪的是,它不是将id为40529099的现有设备代码添加到ElementType,而是插入一个新的空设备代码(当然我要将补丁发送到),删除集合中的其他设备代码,然后将新设备代码添加到ElementType
为了澄清这一点,我想将DB中已经存在的一个设备代码添加到ElementType中的集合中,而不删除该集合中的当前设备代码
[
{
"op": "add",
"path": "/equipmentCodes",
"value": [
"https://localhost:8080/api/equipmentCodes/40529099"
]
}
]
[
{
"op": "add",
"path": "/equipmentCodes",
"value": "https://localhost:8080/api/equipmentCodes/40529099"
}
]