Hibernate: Critéria entre entidades com parametro. [RESOLVIDO]

1 resposta
robertouba

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.

1 Resposta

robertouba

@SuppressWarnings("unchecked") public List<FornecedorItem> listaRelacaoFornecedores(Long id){ return this.session.createCriteria(FornecedorItem.class).add( Restrictions.eq("chaveComposta.item.id", id) ).list(); }

Criado 29 de junho de 2011
Ultima resposta 29 de jun. de 2011
Respostas 1
Participantes 1