Duvida com Struts+Hibernate Annotations

1 resposta
P

Bom dia!
Estou começando a estudar Struts com Hibernate.Baixei os pacotes Hibernate Core e Annotations.Tentei fazer um exemplo que vi na internet e parei em um problema e estou com duvidas.
Segue os códigos:

Classe Produto

view plaincopy to clipboardprint?

@Entity

@Table(name = produto)

public class Produto extends ActionForm{

/**

*

*/

private static final long serialVersionUID = 1L;

@Column(name = descricao, nullable = true, length = 50)

private String descricao;

@Id @GeneratedValue

private Long id;

private Double preco;

private String nome;

public String getDescricao() {

return descricao;

}
public void setDescricao(String descricao) {

this.descricao = descricao;

}
public Long getId() {

return id;

}
public void setId(Long id) {

<a href="http://this.id">this.id</a> = id;

}
public Double getPreco() {

return preco;

}
public void setPreco(Double preco) {

this.preco = preco;

}
public String getNome() {

return nome;

}
public void setNome(String nome) {

this.nome = nome;

}
}

@Entity

@Table(name = produto)

public class Produto extends ActionForm{

/**

*

*/

private static final long serialVersionUID = 1L;

@Column(name = descricao, nullable = true, length = 50)

private String descricao;

@Id @GeneratedValue

private Long id;

private Double preco;

private String nome;

public String getDescricao() {

return descricao;

}
public void setDescricao(String descricao) {

this.descricao = descricao;

}
public Long getId() {

return id;

}
public void setId(Long id) {

<a href="http://this.id">this.id</a> = id;

}
public Double getPreco() {

return preco;

}
public void setPreco(Double preco) {

this.preco = preco;

}
public String getNome() {

return nome;

}
public void setNome(String nome) {

this.nome = nome;

}

}

hibernate.properties
view plaincopy to clipboardprint?
hibernate.dialect org.hibernate.dialect.MySQLDialect
hibernate.connection.driver_class com.mysql.jdbc.Driver
hibernate.connection.url jdbc:mysql://localhost/projeto
hibernate.connection.username root
hibernate.connection.password
hibernate.dialect org.hibernate.dialect.MySQLDialect
hibernate.connection.driver_class com.mysql.jdbc.Driver
hibernate.connection.url jdbc:mysql://localhost/projeto
hibernate.connection.username root
hibernate.connection.password

HibernateFactory

view plaincopy to clipboardprint?

public class HibernateFactory {

public static SessionFactory factory;
static{

AnnotationConfiguration cfg = new AnnotationConfiguration();

cfg.addAnnotatedClass(Produto.class);

factory = cfg.buildSessionFactory();

}

public Session getSession() {
return factory.openSession();

}

}

public class HibernateFactory {

public static SessionFactory factory;
static{

AnnotationConfiguration cfg = new AnnotationConfiguration();

cfg.addAnnotatedClass(Produto.class);

factory = cfg.buildSessionFactory();

}

public Session getSession() {
return factory.openSession();

}
}

Cadastro Action

view plaincopy to clipboardprint?

public class CadastroAction extends Action{

public ActionForward execute(ActionMapping mapping,

ActionForm form,

HttpServletRequest req,

HttpServletResponse res)throws Exception{
Session session = new HibernateFactory().getSession();

Produto produto = (Produto)form;

new ProdutoDao(session).salva(produto);

session.close();

return mapping.findForward(“sucesso”);
}

}

public class CadastroAction extends Action{

public ActionForward execute(ActionMapping mapping,

ActionForm form,

HttpServletRequest req,

HttpServletResponse res)throws Exception{
Session session = new HibernateFactory().getSession();

Produto produto = (Produto)form;

new ProdutoDao(session).salva(produto);

session.close();

return mapping.findForward(“sucesso”);
}

}

ProdutoDao

view plaincopy to clipboardprint?

public class ProdutoDao {

private Session session;
public ProdutoDao(Session session) throws Exception{

this.session = session;

}

public void salva (Produto produto){

this.session.save(produto);

}

public void remove (Produto produto){

this.session.delete(produto);

}

public Produto procura (Long id){

return (Produto) this.session.load(Produto.class, id);

}

public void atualiza (Produto produto){

this.session.update(produto);

}
}

public class ProdutoDao {

private Session session;
public ProdutoDao(Session session) throws Exception{

this.session = session;

}

public void salva (Produto produto){

this.session.save(produto);

}

public void remove (Produto produto){

this.session.delete(produto);

}

public Produto procura (Long id){

return (Produto) this.session.load(Produto.class, id);

}

public void atualiza (Produto produto){

this.session.update(produto);

}

}

Erro:

root cause

view plaincopy to clipboardprint?

org.hibernate.MappingException: Unknown entity: br.unig.teste.modelo.Produto

org.hibernate.impl.SessionFactoryImpl.getEntityPersister(SessionFactoryImpl.java:550)

org.hibernate.impl.SessionImpl.getEntityPersister(SessionImpl.java:133

org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:9

org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:187)

org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:33)

org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:172)

org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:27)

org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:70)

org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:535)

org.hibernate.impl.SessionImpl.save(SessionImpl.java:523)

org.hibernate.impl.SessionImpl.save(SessionImpl.java:519)

br.unig.teste.dao.ProdutoDao.salva(ProdutoDao.java:14)

br.unig.teste.controle.CadastroAction.execute(CadastroAction.java:24)

org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)

org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:226)

org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164)

org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:415)

javax.servlet.http.HttpServlet.service(HttpServlet.java:709)

javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

org.hibernate.MappingException: Unknown entity: br.unig.teste.modelo.Produto

org.hibernate.impl.SessionFactoryImpl.getEntityPersister(SessionFactoryImpl.java:550)

org.hibernate.impl.SessionImpl.getEntityPersister(SessionImpl.java:133

org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:9

org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:187)

org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:33)

org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:172)

org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:27)

org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:70)

org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:535)

org.hibernate.impl.SessionImpl.save(SessionImpl.java:523)

org.hibernate.impl.SessionImpl.save(SessionImpl.java:519)

br.unig.teste.dao.ProdutoDao.salva(ProdutoDao.java:14)

br.unig.teste.controle.CadastroAction.execute(CadastroAction.java:24)

org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)

org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:226)

org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164)

org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:415)

javax.servlet.http.HttpServlet.service(HttpServlet.java:709)

javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

root cause

org.apache.commons.logging.LogConfigurationException: org.apache.commons.logging.LogConfigurationException: org.apache.commons.logging.LogConfigurationException: Class org.apache.commons.logging.impl.Log4JLogger does not implement Log

org.apache.commons.logging.impl.LogFactoryImpl.newInstance(LogFactoryImpl.java:532)

org.apache.commons.logging.impl.LogFactoryImpl.getInstance(LogFactoryImpl.java:272)

org.apache.commons.logging.impl.LogFactoryImpl.getInstance(LogFactoryImpl.java:246)

org.apache.commons.logging.LogFactory.getLog(LogFactory.java:395)

org.hibernate.cfg.Configuration.(Configuration.java:126)

br.unig.teste.hibernate.HibernateFactory.(HibernateFactory.java:12)

br.unig.teste.controle.CadastroAction.execute(CadastroAction.java:23)

org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)

org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:226)

org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164)

org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:415)

javax.servlet.http.HttpServlet.service(HttpServlet.java:710)

javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

root cause

org.apache.commons.logging.LogConfigurationException: org.apache.commons.logging.LogConfigurationException: Class org.apache.commons.logging.impl.Log4JLogger does not implement Log

org.apache.commons.logging.impl.LogFactoryImpl.getLogConstructor(LogFactoryImpl.java:416)

org.apache.commons.logging.impl.LogFactoryImpl.newInstance(LogFactoryImpl.java:525)

org.apache.commons.logging.impl.LogFactoryImpl.getInstance(LogFactoryImpl.java:272)

org.apache.commons.logging.impl.LogFactoryImpl.getInstance(LogFactoryImpl.java:246)

org.apache.commons.logging.LogFactory.getLog(LogFactory.java:395)

org.hibernate.cfg.Configuration.(Configuration.java:126)

br.unig.teste.hibernate.HibernateFactory.(HibernateFactory.java:12)

br.unig.teste.controle.CadastroAction.execute(CadastroAction.java:23)

org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)

org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:226)

org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164)

org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:415)

javax.servlet.http.HttpServlet.service(HttpServlet.java:710)

javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

root cause

org.apache.commons.logging.LogConfigurationException: Class org.apache.commons.logging.impl.Log4JLogger does not implement Log

org.apache.commons.logging.impl.LogFactoryImpl.getLogConstructor(LogFactoryImpl.java:412)

org.apache.commons.logging.impl.LogFactoryImpl.newInstance(LogFactoryImpl.java:525)

org.apache.commons.logging.impl.LogFactoryImpl.getInstance(LogFactoryImpl.java:272)

org.apache.commons.logging.impl.LogFactoryImpl.getInstance(LogFactoryImpl.java:246)

org.apache.commons.logging.LogFactory.getLog(LogFactory.java:395)

org.hibernate.cfg.Configuration.(Configuration.java:126)

br.unig.teste.hibernate.HibernateFactory.(HibernateFactory.java:12)

br.unig.teste.controle.CadastroAction.execute(CadastroAction.java:23)

org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)

org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:226)

org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164)

org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:415)

javax.servlet.http.HttpServlet.service(HttpServlet.java:710)

javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

Sendo que, eu consigo gerar cadastrar por essa configuração, e tbm cadastrar, se o codigo for assim:

view plaincopy to clipboardprint?
public static void main(String [] args){

Session session = new HibernateFactory().getSession();

Produto p = new Produto();

p.setNome(Arroz);

p.setDescricao(Branco);

p.setPreco(1.00);

session.save§;

session.close;

public static void main(String [] args){
Session session = new HibernateFactory().getSession();

Produto p = new Produto();

p.setNome(“Arroz”);

p.setDescricao(“Branco”);

p.setPreco(1.00);

session.save§;

session.close;

Ajudem-me, pois terei que trabalhar com isso brevemente e preciso mto disso!!!
Obrigado!!!

1 Resposta

G

De acordo com a exception:

Você não informou ao Hibernate que a classe Produto deverá ser utilizada. Essa configuração deve ser feita no arquivo hibernate.cfg.xml.

Criado 12 de maio de 2008
Ultima resposta 22 de jul. de 2008
Respostas 1
Participantes 2