Я встретил исключение при использовании аннотированного объединенного подкласса, не знаю, как это исправить, пожалуйста, помогите.
Исключение: org.hibernate.MappingException: неизвестный объект: B
Код:
Класс А
@Entity
@Table(name="table_a")
@Inheritance(strategy=InheritanceType.JOINED)
public class A {
// uses composite key
@Id
@Column(name="sid")
private String sid;
@Id
@Column(name="uid")
private String uid;
.....
}
Класс B
@Entity
@Table(name="table_b")
public class B extends A {
// inherited sid and uid from A
@Id
@Column(name="xid")
private String xid;
@Column(name="name")
private String name;
......
}
Таблицы
create table_a(sid varchar, uid varchar);
create table_b(sid varchar, uid varchar, xid varchar, name varchar);
hibernate.cfg.xml
<hibernate-configuration>
<session-factory>
.....
<mapping class="A"/>
<!-- no need to map B here, right?
<mapping class="B"/>
-->
.....
</session-factory>
</hibernate-configuration>
TestClass
public class HibernateTest {
public static void main(String[] args) throws Exception {
SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
Session session = sessionFactory.openSession();
session.beginTransaction();
B temp = new B();
temp.setSid(1);
temp.setUid(2);
temp.setXid(3);
B target = session.get(B.class, temp);
System.out.println("---------------" + target.getName());
session.getTransaction().commit();
session.close();
}
}
Исключение:
Exception in thread "main" org.hibernate.MappingException: Unknown entity: B