在我的域模型中,一个成员属于一个餐厅(急切),一个餐厅有许多位置(懒惰)。
//会员资格.kt@多对一@JoinColumn(name=“restaurantId”,referencedColumnName=“restaurantId”,insertable=false,updateable=false)lateinit var餐厅:餐厅//餐厅.kt@一对多@JoinColumn(name=“restaurantId”,referencedColumnName=“restauantId”、insertable=false、updateable=fase)var位置:MutableSet<Location>=mutableSetOf()
我在中有一个实体图会员资格.kt
指定要加载会员制.餐厅.位置
:
@命名实体图(name=“Membership.WithLocations”,attributeNodes=[NamedAttributeNode(“restaurant”,subgraph=“restaurant.WithLocations”)],子图=[命名子图(name=“Restaurant.WithLocations”,attributeNodes=[NamedAttributeNode(“位置”)])])
在我的服务层中,我需要一个方法来保存成员身份并返回应用了此实体图的成员身份。以下是我尝试的:
@事务性fun saveAndRefresh(成员资格:成员资格,实体GraphName:String):成员资格{membershipRepository.save(成员身份)val newMembership=entityManager.find(成员身份::class.java,Membership.id)实体管理器刷新(新会员,mapOf(“javax.persistence.fetchgraph”到entityManager.getEntityGraph(entityGraphName)))return newMembership(返回新会员)}
但我发现了会员制.餐厅.位置
仍然没有初始化。为什么不呢?
我试过使用实体管理器.flush()
保存后,还使用保存后完全分离成员身份entityManager.detach(成员身份)
,但两者都没有帮助。