У меня есть 2 класса: пользователь и сообщение.Один пользователь может иметь несколько сообщений.Т.е. это ассоциация один ко многим.Моя таблица пользователей находится в первой базе данных, а таблица сообщений - во второй.Как я могу сопоставить их?
Отображение таблиц моих пользователей и сообщений:
<hibernate-mapping>
<class name="com.example.hibernate.User" table="users" lazy="false">
<id name="xId" type="int" column="xid" >
<generator class="increment"/>
</id>
<set name="messages" inverse="true" table="messages">
<key>
<column name="xsin_id" not-null="true" />
</key>
<one-to-many class="com.example.hibernate.Message" />
</set>
</class>
</hibernate-mapping>
<hibernate-mapping>
<class name="com.example.hibernate.Message" table="messages" lazy="false">
<id name="id" type="int" column="xmsgbox" >
<generator class="increment"/>
</id>
<many-to-one name="user" class="com.example.hibernate.User">
<column name="xsin_id" not-null="true" />
</many-to-one>
</class>
</hibernate-mapping>
У меня также есть 2 * .cfg.xml файла, в которые сопоставляются эти классы.
Мой фрагмент кода теста:
Session session = HibernateUtilUser.getSession();
String SQL_QUERY ="from User user";
Query query = session.createQuery(SQL_QUERY);
User user = null;
for(Iterator it=query.iterate();it.hasNext();){
user=(User)it.next();
break;
}
Set<Message> messages = user.getMessages();
assertNotNull(messages);
Я получаю сообщение об ошибке: Ассоциация ссылается на не отображенный класс: com.example.hibernate.Message
PS мой класс HibernateUtilUser:
public class HibernateUtilUser {
private static SessionFactory sf;
private static Session session;
private HibernateUtil() {}
public static SessionFactory getSessionFactory() {
if (sf == null) {
sf = new Configuration().configure("hibernateuser.cfg.xml").buildSessionFactory();
}
return sf;
}
public static Session getSession() {
if (session == null || session.isOpen() == false) {
session = getSessionFactory().openSession();
}
return session;
}
public Session openSession() {
return sf.openSession();
}
public static void close(){
if (sf != null)
sf.close();
sf = null;
}
}