У меня есть 2 объекта: Автомобиль и Двигатель.Они имеют отношения один-к-одному, и срок службы двигателя зависит от срока службы транспортного средства, поэтому они отображаются на один ПК в базе данных.Когда я загружаю всю сущность Транспортного средства, у меня есть все основные свойства, включая загруженный Двигатель.Однако, когда я пытаюсь найти транспортное средство и загрузить только некоторые свойства, я получаю нулевые значения для свойства Engine.Вот отображение и запросы, которые я пробовал, и результат, который я хотел бы получить: (Извините, я удалил некоторый код, чтобы он был как можно более привязан и все еще понятен, некоторый код может выглядеть неправильно, но он находится в проекте)
Карта автомобиля:
<hibernate-mapping>
<class name="Vehicle" table="VEHICLE" lazy="false">
<id name="id" type="long" access="field">
<!-- ordinary code, skip it -->
</id>
<discriminator column="VEHICLE_TYPE" type="string" />
<property type="string" name="description" column="description" access="field" not-null="true" length="5000" />
<one-to-one
name="engine"
fetch="join"
access="field"
entity-name="Engine"
cascade="all"
/>
<subclass name="Car" discriminator-value="CAR"></subclass>
</class>
</hibernate-mapping>
Карта двигателя:
<hibernate-mapping>
<class name="Engine" table="ENGINE" lazy="false">
<id name="id" column="vehicle_id" type="long" access="field">
<generator class="foreign">
<param name="property">vehicle</param>
</generator>
</id>
<one-to-one
name="vehicle"
access="field"
entity-name="Vehicle"
constrained="true"
/>
<property type="int" name="horsePower" column="horsePower" access="field" not-null="true" />
</class>
</hibernate-mapping>
SELECT car.description FROM Car car -> Одно свойство со значением описания
SELECT car.description, car.engine FROM Car car -> Значение описания и одно нулевое свойство, являющееся двигателем.
SELECT car.description, car.engine.horsePower FROM Car car ->Значение описания и свойство horsePower для двигателя.
SELECT car.description, car.engine.horsePower FROM Car car LEFT JOIN car.engine carEngine -> Тот же результат, что и в прошлом.
ВЫБЕРИТЕ car.description, car.engine ОТ АВТОМОБИЛЯ car ВЛЕВО ПРИКЛАДИТЕ car.engine carEngine -> Опять у меня загружено свойство description и нулевое значение для двигателя.
Можно ли загрузить такmehow простые свойства от машины и всего двигателя вместе.Я хочу, чтобы в наборе результатов было что-то вроде этого:
Object[3] = [
0: "Audi",
1: [Engine[id=1]] <- here is the object engine with its simple properties
2: "some-other-basic-car-property"
]