Olá PessoALL!
Estou brincando com annotations e estou com um probleminha.
Quero mapear a seguinte hierarquia:
–Pessoa
-----Funcionario extende Pessoa
---------Dentista extende Funcionario
O codigo de pessoa.hbm.xml seria algo assim:
<hibernate-mapping>
<class name="classes.Pessoa" table="pessoa">
<id name="id" type="integer">
<generator class="native"/>
</id>
<property name="nome" type="string"/>
<property name="cpf" type="string"/>
<joined-subclass name="classes.Funcionario" extends="classes.Pessoa" table="funcionario">
<key column="id"/>
<property name="matricula" type="integer"/>
<property name="horas" type="integer"/>
<joined-subclass name="classes.Dentista" extends="classes.Funcionario" table="dentista">
<key column="id"/>
<property name="cro" type="string"/>
</joined-subclass>
</joined-subclass>
</class>
</hibernate-mapping>
O que eu tentei fazer pra mapear com annotations foi o seguinte:
@Entity
@Inheritance(strategy = InheritanceType.JOINED)
@Table(name="pessoa")
public class Pessoa implements Serializable{
@Entity
@Table(name = "funcionario")
@PrimaryKeyJoinColumn(name = "pessoaId")
@Inheritance(strategy = InheritanceType.JOINED)
public class Funcionario extends Pessoa{
@Entity
@Table(name = "dentista")
@PrimaryKeyJoinColumn(name = "funcionarioPessoaId")
public class Dentista extends Funcionario{
Ficou beleza até eu tentar fazer o seguinte:
session = HibernateUtil.getSessionFactory().openSession();
String sql = "SELECT * " +
"FROM funcionario fun, pessoa pes " +
"WHERE fun.nomedeusuario = '" + funcionario.getNomeDeUsuario() + "' " +
" AND fun.senha = '" + funcionario.getSenha() + "' " +
" AND fun.status = 'A'" +
" AND fun.pessoaId = pes.id";
SQLQuery sqlQuery = session.createSQLQuery(sql);
sqlQuery.addEntity(Funcionario.class);
Funcionario out;
out = (Funcionario) sqlQuery.uniqueResult();
Quando é chamado o método que executa o código acima, acontece o erro:
java.sql.SQLException: Column 'clazz_' not found.
com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1055)
com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
com.mysql.jdbc.SQLError.createSQLException(SQLError.java:926)
com.mysql.jdbc.ResultSetImpl.findColumn(ResultSetImpl.java:1093)
com.mysql.jdbc.ResultSetImpl.getInt(ResultSetImpl.java:2734)
org.hibernate.type.IntegerType.get(IntegerType.java:28)
org.hibernate.type.NullableType.nullSafeGet(NullableType.java:163)
...
E ai!? Alguém sabe como me ajudar?

