Struts2 + Hibernate3 problema ao inserir dados(id pai fica em branco) no relacionamento

1 resposta
S

Tenho um relacionamento entre objetos.... fiz um metodo main para testar e inseriu tudo certinho.....
mas quando tento inserir dados pelos formulários no objeto filho nao recebe a Id do objeto pai... apenas o nome do curso.....

Objeto pai (aluno)
@Entity
@Table(name="tb_aluno")
public class Aluno {
	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	@Column(name="id_aluno")
	private int id;
	@Column(name="ds_nome")
	private String nome;
	@OneToMany(mappedBy="aluno", fetch=FetchType.EAGER)
	@Cascade(CascadeType.ALL)
	private List<AlunoCurso> cursosCadastrados;

Objeto filho (alnoCurso)

public class AlunoCurso {
	@Id
	@GeneratedValue(strategy=GenerationType.AUTO)
	@Column(name="id_alunoCurso")
	private int id;
	@Column(name="nm_curso")
	private String curso;
	
	
	@ManyToOne(fetch=FetchType.EAGER)
	@JoinColumn(name="id_aluno",insertable=true)
	@Fetch(FetchMode.JOIN)
	private Aluno aluno;
	@OneToMany(mappedBy="alunoCurso", fetch=FetchType.LAZY)
	@Cascade(CascadeType.ALL)
	private List<Nota> notas;

form cadastro aluno

<%@ taglib uri="/struts-tags" prefix="s"%>
<%@ taglib uri="/struts-dojo-tags" prefix="sx" %>
<sx:head />
<div>
	<s:form action="cadastrarALUNO" >
		<s:hidden name="aluno.id"></s:hidden>
		<s:textfield name="aluno.nome"  label="Nome"></s:textfield>
		<sx:submit value="Cadastrar"  notifyTopics="listAlunos"></sx:submit>
	</s:form>
</div>
<img id="carregandoImg" alt="Carregando..." src="img/carregando.gif" style="display: none;">
<sx:div id="listAluno" 
		href="listarSimplesALUNO.action" 
		indicator="carregandoImg"
		showLoadingText="true"
		loadingText="aguarde...Acessando lista de alunos atualizada."
		errorText="Erro ao acessar conteudo"
		listenTopics="listAlunos"
		delay="2000"
		>
		
</sx:div>
form de cadastro do relacionamento (filho alunoCurso)
<sx:head />
<table border="1" bordercolor="white" cellpadding="2" cellspacing="2">
	<tr>
		<td>Aluno: </td>
	</tr>
	<s:iterator value="aluno">
		<tr align="center">
			<td><s:property value="aluno.nome" /></td>
		</tr>
	</s:iterator>


</table>
<div>
	<s:form action="cadastrarAlunoCursoALUNO" >
		<s:hidden name="alunoCurso.id" />
		<s:hidden name="aluno"></s:hidden>
		<s:combobox list="vagasDisponiveis"
					name="alunoCurso.curso"
					label="Curso"
					headerValue="Selecione um curso" 
					headerKey="1">
		</s:combobox>
		<sx:submit value="Cadastrar"  notifyTopics="listAlunos"></sx:submit>
	</s:form>
</div>
Action que chama o formulario pai
public String cadastraAlunos(){
		return"cadastraAlunos";
	}
action que chama o formulario filho
public String alunoCursoCadastrar(){
		aluno = new AlunoDao().consulta(aluno.getId());
		vagasDisponiveis = new CursoServicos().comboCursos();
		return"cadastraAlunosCurso";
	}
action que salva o formulario pai
public void cadastrar(){
		new AlunoDao().inserir(aluno);
	}
action que salva o formulario filho ja tentei essa de duas formas... 1.
public void cadastrarAlunoCurso(){
		aluno = new AlunoDao().consulta(aluno.getId());
		new AlunoCursoDao().inserir(alunoCurso);
		
	}
2.
public void cadastrarAlunoCurso(){
		aluno = new AlunoDao().consulta(aluno.getId());
                alunoCurso.setAluno(aluno);
		new AlunoCursoDao().inserir(alunoCurso);
		
	}
No banco de dados, ele nao salva a id do objeto filho, mas para testar o relacionamento eu fiz um metodo main, da seguinte forma, e salvou.....
public static void main(String[] args) {
		
//		 cadastra um novo aluno
		Aluno aluno = new Aluno();
		aluno.setNome("teste");
		new AlunoDao().inserir(aluno);
//		
//		 Aluno associa-se a um curso
		AlunoCurso alunoCurso = new AlunoCurso();
		alunoCurso.setCurso("Ajax");
		alunoCurso.setAluno(aluno);
		new AlunoCursoDao().inserir(alunoCurso);

pq nao nao salva a id quando vou pelos forms ?

1 Resposta

S

Depois de muita luta finalmente fez se a luz, 3:14 da manha dpois de semanas… rsrsrsrsrsrsrs
encontrei o problema!!!

vamos a solução,

desde que iniciei os meus estudos do struts tive varias duvidas mas essa foi cruel, postei aki no forum e ninguem respondeu,
geralmente (minha opiniao) quando ocorre algo assim é sempre uma coisa bem idiota, mas mesmo assim nao encontrava, mas
agora observando novamente o meu post pude notar tamanha idiotice, o objeto aluno estava fora do form do objeto filho, logo nao existe na proxima action… kkkkkkkkkk
semaaaanas perdidas… mas é isso aí fica a minha experiencia para quem estiver iniciando os estudos …kkkkkkkk

Criado 26 de outubro de 2010
Ultima resposta 29 de out. de 2010
Respostas 1
Participantes 1