[RESOLVIDO] Struts + Hibernate

3 respostas
calel

Estou com uns problemas ao popular a classe Form com struts.
Antes de usar Hibernate, nas propriedades da classe que representavam as FKs era só definir o valor, mas agora com o Hibernate elas são instancias de outras classes... Como defino o valor correto através do struts agora???

Classe ProdutoForm
package br.com.practical.apresentacao;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

@Entity
@Table(name="produto")
public class ProdutoForm {
	@Id
	@GeneratedValue(strategy=GenerationType.AUTO)
	int cd_produto;
	
	@ManyToOne
	GrupoForm grupo;
	
	String ds_produto;
	double preco;
	
	public GrupoForm getGrupo() {
		return grupo;
	}
	public void setGrupo(GrupoForm grupo) {
		this.grupo = grupo;
	}
	public int getCd_produto() {
		return cd_produto;
	}
	public void setCd_produto(int cdProduto) {
		cd_produto = cdProduto;
	}
	
	public String getDs_produto() {
		return ds_produto;
	}
	public void setDs_produto(String dsProduto) {
		ds_produto = dsProduto;
	}
	public double getPreco() {
		return preco;
	}
	public void setPreco(double preco) {
		this.preco = preco;
	}
	
}
Classe GrupoForm
package br.com.practical.apresentacao;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.NamedQuery;
import javax.persistence.Table;

import br.com.practical.negocio.Grupo;

@Entity
@Table(name="grupo")
public class GrupoForm {
	@Id
	@GeneratedValue (strategy = GenerationType.AUTO)
	int idgrupo;
	
	String ds_grupo;
	
	public int getIdgrupo() {
		return idgrupo;
	}
	public void setIdgrupo(int idgrupo) {
		this.idgrupo = idgrupo;
	}

	public String getDs_grupo() {
		return ds_grupo;
	}
	public void setDs_grupo(String dsGrupo) {
		ds_grupo = dsGrupo;
	}
Página de cadastro Struts
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<html>
<head>
<title>Insert title here</title>
<html:base/>
</head>
<body>
<html:errors/>
<html:form action="/cadastrarProduto" focus="ds_produto">
<table>
<tr><th>Produto</th><td><html:text property="ds_produto" /></td></tr>
<tr><th>Preço</th><td><html:text property="preco" /></td></tr>
<tr><th>Grupo</th><td><html:text property="????" /></td></tr>
<tr><td><html:submit /></td><td><html:reset /></td></tr>
</table>
</html:form>
</body>
</html>
Não sei o que colocar no lugar das "????" cheguei a colocar grupo.idgrupo mas também não funcionou =/

Ou se eu puder acrescentar mais uma propriedade no ProdutoForm e o Hibernate ignorar essa propriedade...

3 Respostas

rlaf

Olá Calel, na classe ProdutoForm em cima do atributo GrupoForm coloca a anotação @JoinColumn(name = “nome_daColuna”), assim:

//imports...

@Entity
@Table(name="produto")
public class ProdutoForm{

@Id
@GeneratedValue(strategy=GenerationType.AUTO)
int cd_produto; 

@ManyToOne 
@JoinColumn(name = "nome_daColuna")
GrupoForm grupo;

//Continuação da classe...
calel
Valew Rlaf, agora tá funcionando. :D Fiz o que você falou e acrescentei o seguinte na minha classe mais um método pra funcionar, pq só acrescentando o annotation JoinColumn, o Struts continuava reclamando que não havia um get e set para aquela propriedade.
//imports...  

@Entity  
@Table(name="produto")  
public class ProdutoForm{  
   
@Id  
@GeneratedValue(strategy=GenerationType.AUTO)  
int cd_produto;   
   
@ManyToOne   
@JoinColumn(name = "grupo_id")  
GrupoForm grupo;
	
public int getGrupo _id(){
  return grupo.getIdgrupo();
}
	
public void setGrupo_id(int grupo_id){
  grupo = new GrupoForm();
 grupo.setIdgrupo(grupo_id);
}
//Continuação da classe...
e na jsp:
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<html>
<head>
<title>Insert title here</title>
<html:base/>
</head>
<body>
<html:errors/>
<html:form action="/cadastrarProduto" focus="ds_produto">
<table>
<tr><th>Produto</th><td><html:text property="ds_produto" /></td></tr>
<tr><th>Preço</th><td><html:text property="preco" /></td></tr>
<tr><th>Grupo</th><td><html:text property="grupo_id" /></td></tr>
<tr><td><html:submit /></td><td><html:reset /></td></tr>
</table>
</html:form>
</body>
</html>
rlaf

Qualquer dúvida estou a disposição :wink:

Criado 6 de outubro de 2009
Ultima resposta 8 de out. de 2009
Respostas 3
Participantes 2