Boa tarde galera,
tenho visto muitas informações sobre hibernate, e bom, sei que podemos fazer uma select como se estivéssemos fazendo no banco, entretanto tenho usado createCriteria, e gostaria de saber a melhor maneira de fazer o que eu preciso.
Bom, tenho 3 classes: Item, Fornecedor, FornecedorItem.
O relacionamento está feito vários itens para vários fornecedores, porém posso adicionar alguns parametros nesse relacionamento.
Minhas classes:
@Entity
public class Item {
@Id
@GeneratedValue
private Long id;
private String nome;
@ManyToMany
@JoinTable(name="Item_Fornecedor",
joinColumns=@JoinColumn(name="item_id"),
inverseJoinColumns=@JoinColumn(name="fornecedor_id"))
private List<Fornecedor> fornecedores;
@Entity
public class Fornecedor {
@Id
@GeneratedValue
private Long id;
@NotEmpty
@NotNull
@Column(length = 100)
private String nomeFantasia;
@ManyToMany
@JoinTable(name="Item_Fornecedor",
joinColumns=@JoinColumn(name="fornecedor_id"),
inverseJoinColumns=@JoinColumn(name="item_id"))
private List<Item> itens;
@Entity
@Table(name = "Item_Fornecedor")
public class FornecedorItem {
@EmbeddedId
private FornecedorItemPK chaveComposta;
@Column(length=70)
private String nomeComercial;
@Column(length=30)
private String codigo;
Quero fazer um formulário, onde eu visualizo por item, todos os fornecedores e os campos adicionais, então deveria trazer o item, os nomes dos fornecedores, e cada um dos campos de nomeComercial e codigo. Sei que se eu trouxer em uma critéria de FornecedorItem terei os dados, entretanto, como trazer somente dos Item.id que eu quero?
Estive tentando algo como:@SuppressWarnings("unchecked")
public List<FornecedorItem> listaRelacaoFornecedores(Long id){
return this.session.createCriteria(FornecedorItem.class).add(
Restrictions.eq("fonecedorItem.item.id", id)
).list();
}
Mas não consigo saber qual é o parametro que devo passar no Restrictions.