Alguem poderia mim ajudar a implementar o metodo salvarAluno da classe AlunoController ou vê o que esta faltando.
E como eu faço nesse caso para criar um metodo na classe AlunoController par pegar os dados do bd e colocar numa pagina como tabela(pois são dados de tres tabelas pessoa, aluno e endereco)?
Obs. Esse modelo e do tutorial hibernate 3 que tem no site, eu estou usando tipo de mapeamento de tabela por Sub-Classe. E quando eu executo o codigo da um error.
Classe AlunoController:
[code]public class AlunoController {
private AlunoDao alunoDao = DaoFactory.getAlunoDao();
private DataModel model;
private Aluno aluno;
private Endereco endereco;
public String novoAluno() {
aluno = new Aluno();
endereco = new endereco();
return "nvAluno";
}
public String salvarAluno() {
try {
if (alunoDao.recuperar(aluno.getId()) == null) {
aluno.setEndereco(endereco);
alunoDao.salvar(aluno);
} else
alunoDao.atualizar(aluno);
return "slAluno";
} catch (Exception e) {
e.printStackTrace();
return "fcAluno";
}
}
…
[/code]
Classe Pessoa:
[code]public class Pessoa implements Serializable{
private int id;
private String nome;
private String email;
private String telefone;
private Endereco endereco;
…
get e set
}[/code]
Classe Endereço:
[code]public class Endereco implements Serializable{
private int id;
private String rua;
private int numero;
private String bairro;
private String cidade;
private String estado;
private String complemento;
private String cep;
private Pessoa pessoa;
…
get e set
}[/code]
Classe Aluno:
public class Aluno extends Pessoa implements Serializable{
private String matricula;
private Collection turmas;
...
get e set
}
Pessoa.hmb.xml:
<hibernate-mapping package="model">
<class name="Pessoa" table="pessoa">
<id name="id" column="id">
<generator class="native">
<param name="sequence">seq_pessoa</param>
</generator>
</id>
<property name="nome"></property>
<property name="email"></property>
<property name="telefone"></property>
<one-to-one name="endereco" class="Endereco" cascade="save-update"></one-to-one>
</class>
</hibernate-mapping>
Aluno.hbm.xml:
<hibernate-mapping package="model">
<joined-subclass name="Aluno" extends="Pessoa" table="aluno">
<key column="pessoa_id" />
<property name="matricula" />
<set name="turmas" table="turma_has_aluno" inverse="false">
<key column="aluno_pessoas_id" />
<many-to-many class="Turma" column="turma_id" />
</set>
</joined-subclass>
</hibernate-mapping>
classe AlunoDao:
[code]public class AlunoDao extends AbstractDao<Aluno, Integer> {
private static AlunoDao instancia = null;
private AlunoDao(){
super(Aluno.class);
}
protected static AlunoDao getInstancia(){
if(instancia == null)
instancia = new AlunoDao();
return instancia;
}
}[/code]
classe AbstractDao:
[code]public abstract class AbstractDao<Tipo, TipoID extends Serializable> implements InterfaceDao<Tipo, TipoID>{
protected Session session;
protected Transaction tx;
protected Class classe;
protected AbstractDao(Class classe){
this.classe = classe;
}
@Override
public void atualizar(Tipo obj) throws Exception {
...
}
@Override
public void excluir(Tipo obj) throws Exception {
...
}
@Override
public List<Tipo> listarTodos() throws Exception {
...
}
@Override
public Tipo recuperar(TipoID id) throws Exception {
....
}
@Override
public void salvar(Tipo obj) throws Exception {
...
}
}[/code]
pagina novoAluno:
<f:view>
<h2>Preenchar os Campos:</h2>
<h:form>
<h:panelGrid columns="2" border="0">
<h:outputText value="Matricula"/>
<h:inputText id="matricula" value="#{aluCont.aluno.matricula}"/>
<h:outputText value="Nome:" />
<h:inputText id="nome" value="#{aluCont.aluno.nome}" size="30" />
<h:outputText value="E-Mail:" />
<h:inputText id="email" value="#{aluCont.aluno.email}" size="30" />
<h:outputText value="Telefone:" />
<h:inputText id="telefone" value="#{aluCont.aluno.telefone}"
size="11" />
<h:outputText value="Rua:" />
<h:inputText id="rua" value="#{aluCont.endereco.rua}" size="25" />
<h:outputText value="Numero:" />
<h:inputText id="numero" value="#{aluCont.endereco.numero}" size="3"/>
<h:outputText value="Bairro:" />
<h:inputText id="bairro" value="#{aluCont.endereco.bairro}" size="15" />
<h:outputText value="Cidade:" />
<h:inputText id="cidade" value="#{aluCont.endereco.cidade}" size="15" />
<h:outputText value="Estado:" />
<h:inputText id="estado" value="#{aluCont.endereco.estado}" size="15" />
<h:outputText value="Complemento:" />
<h:inputText id="complemento" value="#{aluCont.endereco.complemento}"
size="25" />
<h:outputText value="Cep:" />
<h:inputText id="cep" value="#{aluCont.endereco.cep}" />
</h:panelGrid>
<h:commandButton value="Limpar" type="reset" />
<h:commandButton value="Gravar" action="#{aluCont.salvarAluno}" />
</h:form>
</f:view>
error que aparece no console do eclipse: