У меня есть таблица Project с полямиHibernate: как получить обратно соединенный объект (один к одному)
ID
PROJECT_BASELINE_ATTRIBUTES_ID (FK for table PROJECT_BASELINE_ATTR)
Эта таблица имеет следующее отображение
<hibernate-mapping package="com.initech.db.model">
<class name="com.initech.db.model.Project" table="PROJECT">
<id name="id" column="id" type="java.lang.Long">
<meta attribute="use-in-tostring">true</meta>
<generator class="sequence">
<param name="sequence">PROJECT_ID_SEQ</param>
</generator>
</id>
<many-to-one name="projectBaselineAttributes" column="PROJECT_BASELINE_ATTRIBUTES_ID" class="com.initech.db.model.ProjectBaselineAttributes" cascade="all" not-null="true">
<meta attribute="use-in-tostring">true</meta>
</many-to-one>^
</class>
</hibernate-mapping>
соответствующих Класс Project.java имеет поля
private Long id;
private ProjectBaselineAttributes projectBaselineAttributes;
Кроме того, у меня есть возможность PROJECT_BASELINE_ATTR, содержащего поле
ID
Отображение Hibernate:
<hibernate-mapping package="com.initech.db.model">
<class name="com.initech.db.model.ProjectBaselineAttributes" table="PROJECT_BASELINE_ATTR">
<id name="id" column="id" type="java.lang.Long">
<generator class="sequence">
<param name="sequence">PRO_BASE_ATTR_ID_SEQ</param>
</generator>
</id>
<set name="projects" table="PROJECT" inverse="true" lazy="true" fetch="select">
<key>
<column name="PROJECT_BASELINE_ATTRIBUTES_ID" precision="22" scale="0" not-null="true" />
</key>
<one-to-many class="com.initech.db.model.Project" />
</set>
</class>
</hibernate-mapping>
Соответствующий класс ProjectBaselineAttributes.java имеет поле
private Long id;
private Set projects = new HashSet();
В настоящее время отображения не является идеальным, поскольку связь между двумя таблицами на самом деле взаимно однозначна, но в ProjectBaselineAttributes у меня есть набор Pro даже несмотря на то, что для одного объекта ProjectBaseLine всегда есть один Projet. Что должно выглядеть отображение для ProjectBaselineAttributes, так что я могу получить соответствующий проект «сингулярно», то есть так, что класс ProjectBaselineAttributes.java будет выглядеть следующим образом:
private Long id;
private Project project;