[Resolvido]Hibernate - Nome dos campos - Fácil[Resolvido]

4 respostas
101574

Galera,

De boa?

Feliz dia dos Profissionais em TI.

Bom, eu estou fazendo uma consulta utilizando o hibernate. So não sei como eu passo um relacionamento para esse consulta.

Olha só.

Eu tenho:
Classe Produto.
Classe Empresa.
Classe ProdutoEmpresa.

@Entity
public class Produto {
	
	//Variáveis
	@Id @GeneratedValue
	private Long id;
	private String nome;
	private String preco;

Relacionamento com ProdutoEmpresa.

//Relacionamento com ProdutoEmpresa
		@OneToMany(mappedBy = "produto",targetEntity= ProdutoEmpresa.class,
		fetch = FetchType.LAZY, cascade = CascadeType.ALL)
		private List<ProdutoEmpresa> produtoEmpresa;

Tabela Empresa.

@Entity
public class Empresa {

	//Variáveis
	@Id @GeneratedValue
	private Long id;
	private String fantasia;

Relacionamento com ProdutoEmpresa.

//Relacionamento com ProdutoEmpresa
		@OneToMany(mappedBy = "empresa",targetEntity= ProdutoEmpresa.class,
		fetch = FetchType.LAZY, cascade = CascadeType.ALL)
		private List<ProdutoEmpresa> produtoEmpresa;

Classe ProdutoEmpresa.

@Entity
public class ProdutoEmpresa {
	
	//Variáveis
	@Id @GeneratedValue
	private Long id;
	private String quantidade_estoque;
	private String preco;
	private String ativo;
		
	//Relacionamento com Produto
		@ManyToOne
		@JoinColumn(name="cod_produto")
		private Produto produto;
	
	//Relacionamento com Empresa
		@ManyToOne
		@JoinColumn(name="cod_empresa")
		private Empresa empresa;
	
	//Método set e get

Fiz os set e get de todo mundo.

O que eu preciso, um DAO que pesquise para mim o menor preço do produto.
Dessa forma, o que eu fiz.

Consulta com o Hiberante para Localizar a empresa que tem o menor preço
			public List<ProdutoEmpresa> buscamenorpreco(Produto produto) {
				return session.createCriteria(ProdutoEmpresa.class).add(Restrictions.eq("produto",produto))
						.addOrder(Order.asc("preco")).list();
			}

Minha dúvida e como eu passo aqui, o cod_produto para ele pesquisar. Coloquei conforme acima, não funcionou.

E fiz também o Controllador.

//Página do menor preço @Get("/produto/menorpreco2") public List<ProdutoEmpresa> menorpreco(Produto produto) { return dao.buscamenorpreco(produto); }

Como eu faço isso?
Só preciso saber como eu passo isso no Hibernate.
Valeu Galera!!!

Tinha esquecido, olha o erro.

br.com.caelum.vraptor.InterceptionException: exception raised, check root cause for details: org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: br.com.softsol.compresempre.modelo.Produto

4 Respostas

igor_ks

Esse erro acontece pq seu objeto está fora da sessão, está com status Transient no ciclo do hibernate

101574

Poww Borther, valeu.
Mas como eu resolvo isso.
Já tentei de todas as formas possíveis.
Preciso de uma luz.
Valeu.

Hebert_Coelho

101574:
Poww Borther, valeu.
Mas como eu resolvo isso.
Já tentei de todas as formas possíveis.
Preciso de uma luz.
Valeu.
Opa, então dá uma olhada aqui: JPA: Mini Livro - Primeiros passos e conceitos detalhados.

Estava esperando o post ficar pronto para colocar o link aqui. [=

101574

Bom dia!
Poww cara, valeu pela ajuda.
Consegui hoje, estudando lendo. A verdade e que eu não sabia onde encontrar essa resposta.
Procurei em toda a documentação, e não consegui achar pelo indice.
Comecei a ler, e encontrei quase na metade, implementei hoje e funcionou.
Estava vindo justamente aqui, postar a solução.

Olha só como ficou o meu dao.

//Consulta com o Hiberante para Localizar a empresa que tem o menor preço
			public List<ProdutoEmpresa> buscamenorpreco(Long id) {
				return session.createCriteria(ProdutoEmpresa.class)
						.addOrder(Order.asc("preco")).
						createCriteria("produto").
						add(Restrictions.eq("id",id)).list();
Criado 19 de outubro de 2012
Ultima resposta 24 de out. de 2012
Respostas 4
Participantes 3