Простое извлечение данных HIbernate

У меня есть таблицы, как показано ниже

Персона:

  • Целочисленный идентификатор (PK)
  • строковое имя

Адрес:

  • Целое число addrs_Id (PK)
  • Integer person_Id (FK) — отображение onetomany в person
  • Строковый адрес

Отображение Гибернации:

<hibernate-mapping>
    <class name="com.mypackage.Person" table="PERSON">
        <id name="id">
            <column name="ID"/>
            <generator class="increment"></generator>
        </id>

        <property name="name"></property>
        <bag name="address" table="ADDRESS" inverse="true" lazy="false" fetch="select" cascade="all">
            <key>
                <column name="PERSON_ID" not-null="false"/>
            </key>
            <one-to-many class="Address"/>
        </bag>

    </class>


    <class name="Address" table="ADDRESS">
        <id name="id">
            <column name="ADD_ID"/>
            <generator class="increment"></generator>
        </id>
        <property name="type" type="string" not-null="true" column="TYPE" length="1"/>
        <many-to-one name="person" class="Person" lazy="false" fetch="select">
            <column name="PERSON_ID" not-null="true"/>
        </many-to-one>
    </class>

</hibernate-mapping>

POJOs:

public class Person {

private int id;
private String name;
private List<Address> addresses;
....
// getters and setters defined
}

public class Address {

private int add_id;
private int person;
private String address;
....
// getters and setters defined
}

Мне нужно получить данные в 2 различных содержания

  • Когда человек извлекается из БД, адреса должны быть предварительно заполнены — это прекрасно работает с отображением, сделанным выше
  • Получить человека без загруженного адреса, но хотите загрузить адрес отдельно и прикрепить к человеку (без ленивой загрузки). Как этого можно достичь с помощью простого отображения Hibernate?

1 ответ