Ola a todos,
Estou tentando fazer um pequeno cadastro utilizando o Hibernate com o Struts, vejam os meus códigos:
Aluno.java
package web_struts.webapp.beans;
// Importando as classes
import javax.persistence.*;
import org.apache.struts.action.*;
@Entity(access=AccessType.FIELD)
@Table(name="ALUNO")
@SequenceGenerator(name="SEQ_ALUNO", sequenceName="SEQ_ALUNO")
public class Aluno extends ActionForm {
@Id(generate=GeneratorType.SEQUENCE, generator="SEQ_ALUNO")
private int id;
@Column(name="nick", nullable=false, length=20)
private String nick;
@Column(name="senha", nullable=false, length=20)
private String senha;
@Column(name="nome", nullable=false, length=50)
private String nome;
@Column(name="email", nullable=false, length=50)
private String email;
public void setId(int id){
this.id = id;
}
public int getId(){
return this.id;
}
public void setNick(String nick){
this.nick = nick;
}
public String getNick(){
return this.nick;
}
public void setSenha(String senha){
this.senha = senha;
}
public String getSenha(){
return this.senha;
}
public void setNome(String nome){
this.nome = nome;
}
public String getNome(){
return this.nome;
}
public void setEmail(String email){
this.email = email;
}
public String getEmail(){
return this.email;
}
}
Agora meu formulário de cadastro
<%@taglib uri="/WEB-INF/struts-html.tld" prefix="html"%>
<html:html>
<head><title>Cadastro de Alunos</title></head>
<body>
<table>
<html:form action="/cadastra_aluno" focus="nick">
<tr>
<td>Nick</td>
<td><html:text property="nick" size="16"/></td>
</tr>
<tr>
<td>Senha</td>
<td><html:password property="senha" size="16"/></td>
</tr>
<tr>
<td>Nome</td>
<td><html:text property="nome" size="50"/></td>
</tr>
<tr>
<td>E-mail</td>
<td><html:text property="email" size="40"/></td>
</tr>
<tr>
<td><html:submit>Enviar dados</html:submit></td>
<td><html:reset>Resetar campos </html:reset></td>
</tr>
</html:form>
</table>
</body>
</html:html>
E minha ação para o cadastro
package web_struts.webapp.action;
import javax.servlet.http.*;
import org.apache.struts.action.*;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.SessionFactory;
import org.hibernate.Session;
import web_struts.webapp.beans.Aluno;
public class CadastraAluno extends Action {
public ActionForward execute(ActionMapping map, ActionForm form,
HttpServletRequest req, HttpServletResponse resp) throws Exception {
AnnotationConfiguration cfg = new AnnotationConfiguration();
// Adcionando as classes anotadas
cfg.addAnnotatedClass(web_struts.webapp.beans.Aluno.class);
// Adcionando a configuração as propriedades de conexão com o banco de dados
cfg.setProperty( "hibernate.dialect", "org.hibernate.dialect.PostgreSQLDialect" );
cfg.setProperty( "hibernate.connection.driver_class", "org.postgresql.Driver" );
cfg.setProperty( "hibernate.connection.url", "jdbc:postgresql:struts" );
cfg.setProperty( "hibernate.connection.username", "postgres" );
cfg.setProperty( "hibernate.connection.password", "kamikaze" );
cfg.setProperty( "hibernate.connection.autocommit", "true" );
cfg.setProperty( "hibernate.connection.show_sql", "true");
// Criando uma Sessao
SessionFactory factory = cfg.buildSessionFactory();
Session sessao = factory.openSession();
// Instanciando um objeto do tipo Aluno
Aluno aluno = (Aluno) form;
try{
// Inserindo os dados
sessao.save(aluno);
sessao.flush();
sessao.close();
} catch (Exception e){
e.printStackTrace();
}
// Redirecinando
return map.findForward("ok_cadastra_aluno");
}
}
E finalmente o erro:
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: Could not determine type for: org.apache.struts.upload.MultipartRequestHandler, for columns: [org.hibernate.mapping.Column(multipartRequestHandler)]
org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:523)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:362)
root cause
org.hibernate.MappingException: Could not determine type for: org.apache.struts.upload.MultipartRequestHandler, for columns: [org.hibernate.mapping.Column(multipartRequestHandler)]
org.hibernate.mapping.SimpleValue.getType(SimpleValue.java:265)
org.hibernate.mapping.SimpleValue.isValid(SimpleValue.java:252)
org.hibernate.mapping.Property.isValid(Property.java:174)
org.hibernate.mapping.PersistentClass.validate(PersistentClass.java:325)
org.hibernate.mapping.RootClass.validate(RootClass.java:188)
org.hibernate.cfg.Configuration.validate(Configuration.java:839)
org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1000)
web_struts.webapp.action.CadastraAluno.execute(CadastraAluno.java:29)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:362)
è isso,
Valeu,
Paulo Henrique Peres