Por exemplo, tenho a Classe CarroPopular com id e marca e tenho a classe CarroLuxo com id e marca também, como retorno numa consulta a lista com todas as marcas de carro disponíveis em CarroPopular e CarroLuxo?
Depende de como voce modelou seu dominio. Se não existir nenhum relacionamento entre CarroLuxo e CarroPopular não tem como voce usar o join com HQL. Talvez com subqueries, mas eu teria que conhecer seu dominio pra te responder.
Bom… :roll: os dados de uma tabela não tem nenhum relacionamento com a outra tabela… Se os atibutos fossem do tipo String seria apenas pegar pegar os dados de marca de veículos que estão cadastrados em CarroPopular e cruzar com os dados de marca de CarroLuxo, tipo uma operação de algebra relacional mesmo, bem besta, só pegar os dados de um atributo de uma tabela e unir com o de outra, tem algum jeito?
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;
@Column(name="marca")
private String marca;
...gets e sets...
}[/code]
Classe VeículoPopular
@Entity(name="veiculopopular")
public class VeiculoPopular extends Veiculo implements Serializable { }
Classe VeiculoLuxo
@Entity(name="veiculoluxo")
public class VeiculoLuxo extends Veiculo implements Serializable { }
Isso gera duas tabelas, veiculopopular e veiculoluxo. Por HQL já consegui puxar a lista de marcas das tabelas em separado, assim:
listaMarca = sessao.createQuery(
"select distinct vL.marca from model.beans.VeiculoLuxo vL" +
" where vL.marca is not null order by vL.marca asc"
).list();
Mas queria ajuda num código HQL que permitisse obter a lista de marcas de VeiculoLuxo e VeiculoPopular e retornasse tudo junto (JOIN) numa lista só.
É isso… Desde já, obrigado!
Quer dizer que no Hibernate eu só posso fazer Join de atributos relacionados? Por exemplo, como na álgebra relacional, não posso apenas multiplicar as tuplas de um atributo de uma tabela por outro atributo de outra tabela? :shock: