我有一个实体ElementType,它有一组EquipmentCodes:
@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;
}
我将两个类都显示为具有存储库的Rest Resources:
@RepositoryRestResource(path = "elementTypes", collectionResourceRel = "elementTypes")
@Transactional
public interface ElementTypeRepository extends CrudRepository<ElementType, Long> {}
现在,如果我尝试一些操作,比如
或PATCH发送
{
"equipmentCodes" : [
"https://localhost:8080/api/equipmentCodes/40529100"
]
}
但是,如果我尝试将新的deviceCode添加到现有的设备中,它似乎工作正常:
[
{
"op": "add",
"path": "/equipmentCodes",
"value": [
"https://localhost:8080/api/equipmentCodes/40529099"
]
}
]
我得到了
org.hibernate.LazyInitializationException:懒得初始化 一个集合,无法初始化代理 - 没有会话,at at org.springframework.data.rest.webmvc.json.patch.JsonLateObjectEvaluator.evaluate(JsonLateObjectEvaluator.java:45)
有关问题的任何提示?我使用“添加”的方式是否有问题,或者它是关于Spring配置的?
编辑:这可能是一个罪恶的错误,像这样我没有得到例外:
[
{
"op": "add",
"path": "/equipmentCodes",
"value": "https://localhost:8080/api/equipmentCodes/40529099"
}
]
然而奇怪的是,不是将ID为40529099的现有EquipmentCode添加到ElementType,而是插入一个新的空EquipmentCode(当然我将补丁发送到https://localhost:8080/api/elementTypes/40529090),而不是另一个集合中的那些,然后将新元素与元素类型
相对应为了澄清,我想要的是将已经在DB中的一个EquipmentCode添加到ElementType中的集合中,而不删除该集合中的当前EquipmentCodes。