나는 2 개의 테이블, 즉 구독자와 연락처가 있습니다. 테이블은 다음과 같이 보일 :최대 절전 모드에서 여러 테이블의 데이터 검색
subscriber -> id, contact_id //contact_id is a foreign key
contact -> id, firstName, lastName, email, contactType
내 Contact.hbm.xml 파일은 다음과 같습니다 :
<hibernate-mapping>
<class name="com.DBNAME.model.Contact" table="contact" >
<id name="id" type="int">
<column name="id" />
<generator class="identity" />
</id>
<property name="contactType" type="int">
<column name="contactType" sql-type="TINYINT"></column>
</property>
<property name="firstName" type="string">
<column name="firstName"></column>
</property>
<property name="lastName" type="string">
<column name="lastName"></column>
</property>
</class>
</hibernate-mapping>
그리고 내 Subscriber.hbm.xml 파일은 다음과 같다 :
<hibernate-mapping>
<class name="com.DBNAME.model.Subscriber" table="subscriber" >
<id name="id" type="int">
<column name="id" />
<generator class="identity" />
</id>
<many-to-one name="contact" class="com.DBNAME.model.Contact" column="contact_id" unique="true" fetch="join"/>
</class>
</hibernate-mapping>
이제 연락처가 자동으로 매핑되는 간단한 구독자 개체를 검색하려고합니다. 그래서 자바 코드에서하는 일입니다
/**
* get Subscribers
*/
@SuppressWarnings("unchecked")
private void getSubscribersWithContactDetails() {
Session session = HibernateUtils.getSessionFactory().getCurrentSession();
session.beginTransaction();
try {
setSubscribers((List<Subscriber>)session.createQuery("from Subscriber").list());
} catch (HibernateException e) {
session.getTransaction().rollback();
} finally {
session.getTransaction().commit();
}
}
/**
* @param subscribers the subscribers to set
*/
public void setSubscribers(List<Subscriber> subscribers) {
this.subscribers = subscribers;
}
내 데이터 클래스처럼 보이는 다음
public class Contact implements Serializable {
private static final long serialVersionUID = 1L;
private int id;
private int contactType;
private String firstName;
private String lastName;
// Getters Setters and constructors
}
public class Subscriber implements Serializable {
private static final long serialVersionUID = 1L;
private int id;
private Contact contact; //Foreign Key from Contact -> id
private int contactId;
//Constructors, Getters and Setters
}
그리고 Hibernate에 의해 생성 된 내 쿼리는 다음과 같습니다
select subscriber0_.id as id1_, subscriber0_.contact_id as contact2_1_ from subscriber subscriber0_
내가 연락처 테이블에서 연락처 세부 정보를 가져 오지 못합니다. 어떻게 할 수 있습니까?
연락처 개체가 null이고 연락처 내부의 모든 세부 정보가 Null로 설정됩니다. – Ahmed
.hbm 파일에서 'lazy = false'를 사용하십시오. 그것은 귀하의 경우에 당신이 null 항목을 받고 있기 때문에 사실입니다. 이 옵션을 사용하면 구독자에 데이터가 보관됩니다. – instanceOfObject