Pessoal,
Supondo que tenho as tabelas no DB;
Tabela1 {
IDTab1,
Nome
}
Tabela2{
IDTab2,
NomeCompleto
}
Se em uma consulta eu possuir o seguinte código SQL:
SELECT IDTab1,
Nome,
NomeCompleto
FROM Tabela1, Tabela2
WHERE Tabela1.NomeCompleto like '%'||Tabela2.Nome||'%'
@Entity
...
public class Tabela1{
@Id
@Column(name = "idtab1")
private Integer IDTab1;
@Column(name = "nome")
private String nome;
//Preencher este atributo com resultado da consulta
@Transient
private nomeCompleto;
....
}
String strSQL = "SELECT IDTab1, Nome, NomeCompleto FROM Tabela1, Tabela2 WHERE Tabela1.NomeCompleto like '%'||Tabela2.Nome||'%'";
SQLQuery query = (SQLQuery) this.getSession().createSQLQuery(strSQL).addEntity(Tabela1.class);
List<Tabela1> listResult = query.list();
1. As tabelas não possuem integridade referencial;
2. Se eu adicionar o atributo nomeCompleto na entity de mapeamento da Tabela1, ele interpretará que este atributo existe na base de dados;
3. Me sugeriram adicionar o atributo "nomeCompleto" como @Transient, mas mesmo assim, ele não é preenchido com o query.list();
4. Como forma alternativa, pensei em não utilizar o addEntity(Tabela1.class) e trabalhar com Object[], porém, antes de iniciar essa abordagem, queria saber se há uma forma mais "simples" de trabalhar.
Há como eu fazer com que o resultado da consulta me retorne instancia da classe Tabela1 + o atributo "nomeCompleto" preenchido?
Obs: Utilizei nomes hipotéticos, pois, ainda estou fazendo testes antes de iniciar a implementação.