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) {
this.id = 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) {
this.id = 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!!!