Я реализую родительские / дочерние отношения, используя самостоятельное соединение
, в котором одна рабочая группа может иметь другую рабочую группу в качестве дочерней. Следующее отображение правильно сохраняет данные в базе данных, но не может загрузить родительские данные при извлечении заново создал дочернюю рабочую группу.
У меня есть следующие файлы PimWorkGroup.hbm. xml
таблица: pim_workgroup
<hibernate-mapping>
<class name="PimWorkgroup" table="pim_workgroup" >
<id name="workgroupId" type="string" unsaved-value="null">
<column name="workgroup_id" length="36" />
<generator class="uuid2"/>
</id>
<properties name="unique_constraint_OwnerParentWorkgroupId_GroupName" unique="true">
<many-to-one foreign-key="fk_Workgroup_OwnerParentWorkgroup" lazy="false" name="ownerParentWorkgroup" class="PimWorkgroup" fetch="join">
<column name="owner_parent_workgroup_id" length="36" />
</many-to-one>
<property name="groupName" type="string">
<column name="group_name" length="50" not-null="true" />
</property>
</properties>
<set name="subWorkgroups" inverse="false" lazy="false" table="pim_workgroup" cascade="all">
<key column="owner_parent_workgroup_id" />
<one-to-many class="PimWorkgroup" />
</set>
</hibernate-mapping>
@Service Class
@Service
public class WorkGroupService {
@Autowired
WorkGroupRepository repository;
public void addWorkGroup(String tenantId, WorkgroupDto inputData) {
repository.addWorkGroup(dtoToWorkGroup(inputData));
}
public PimWorkgroup dtoToWorkGroup(WorkgroupDto dto){
PimWorkgroup parentWG=new PimWorkgroup();
parentWG.setWorkgroupId(dto.getOwningParentId());
//It's A Constructor--public PimWorkgroup(PimWorkgroup ownerParentWorkgroup, String groupName, String description,boolean sharedToParentFlag)
PimWorkgroup workgroup=new PimWorkgroup(parentWG,dto.getName(),dto.getDescription(),dto.isSharedWorkgroup());
return workgroup;
}
}```
@Repository
public class WorkGroupRepositoryImpl implements WorkGroupRepository {
@Override
public PimWorkgroup addWorkGroup(PimWorkgroup workgroup) {
Session session = null;
Transaction tx = null;
PimWorkgroup savedWorkGroup=null;
try {
session = hibernateUtilWrapperMT.openSession();
tx = session.beginTransaction();
session.save(workgroup);
tx.commit();
savedWorkGroup = (PimWorkgroup) session.get(PimWorkgroup.class, workgroup.getWorkgroupId());
}
} catch (Exception e) {
if (tx != null)
hibernateUtilWrapperMT.rollbackTx(tx);
}finally {
hibernateUtilWrapperMT.closeSession(session);
}
return savedWorkGroup;
}
Database entries
------------------------------------------------------------------------------------------------------------------------------------------------------------------
workgroup_id owner_tenant_id owner_parent_workgroup_id group_name description
---------------------------------------------------------------------------------------------------------------------------------------------------------
d8bec626-76d9-4c52-83c0-48800252bb49 f7eaef24-95cc-4580-9c82-a4e57cebcbbc d8bec626-76d9-4c52-83c0-48800252bb49 Parent_Workgroup Root system workgroup
------------------------------------------------------------------------------------------------------------------------------------------------------------------
ec7233f9-7e5b-4d8b-bd8d-1440d799a5fb 9d12546b-35a9-4dcc-b95d-c59b2a07d2fa d8bec626-76d9-4c52-83c0-48800252bb49 Child1 description.
------------------------------------------------------------------------------------------------------------------------------------------------------------------
bf30e773-97f0-435d-9021-2dd4f2654962 9d12546b-35a9-4dcc-b95d-c59b2a07d2fa d8bec626-76d9-4c52-83c0-48800252bb49 Child2 description
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
saveWorkGroup = (PimWorkgroup) session.get (PimWorkgroup.class, workgroup.getWorkgroupId ());
Я ожидаю, что он должен вернуть вновь созданную WorkGroup, а также свою родительскую рабочую группу, в которой он создан.
, но в saveWorkGroup для ownerParentWorkgroup он просто загружает свои id остальные поля null .
Кто-то, ПОЖАЛУЙСТА, ПОЖАЛУЙСТА, помогите мне с этим