I have a tables as below
Person:
- Integer ID(PK)
- String Name
Address:
- Integer addrs_Id(PK)
- Integer person_Id(FK) - onetomany mapping to person
- String address
Hibernate Mapping:
<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
}
I need to retrieve data in 2 different contents
- When Person is retrieved from DB, Addresses should be prepopulated - This works fine with the mapping done above
- Retrieve Person without Address loaded, but want to load the address separately and attach to person (without lazy loading). How can this be achieved with simple Hibernate mapping?