Spring 3..0.5 + hierbnate 3.6.6.final + jboss as 7数据库访问

我正在将我们的项目从spring 2.5.6,hibernate 3.3.2,jboss 4.2升级到Spring 3..0.5 + hierbnate 3.6.6.final + jboss as 7

那里有很多问题,我决定写一个简单的项目,并在jboss as7(使用Spring 3..0.5 + hierbnate 3.6.6.final)开始时将其删除。 该项目非常简单:DAO类将访问MYSQL数据库。 但是当它的entityManager尝试访问数据库时,应用程序失败,抛出“抛出exception:org.hibernate.MappingException:未知实体”。

以下是我的项目:

我的web控制器类:

package com.yan.testing.web.controller; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import com.yan.testing.jpa.dao.IYanDao; import com.yan.testing.jpa.entity.Yan; @Controller public class WebController { @Autowired IYanDao yanDao; @RequestMapping("sayHello.do") public String SayHello(){ Yan yan = yanDao.findById(1L); System.out.println(yan.getName()); return "sayHello"; } } 

我的DAO接口:

 package com.yan.testing.jpa.dao; import com.yan.testing.jpa.entity.Yan; public interface IYanDao { Yan findById(Long id); } 

在我的DAO课程中:

 package com.yan.testing.jpa.dao.impl; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import org.springframework.stereotype.Repository; import com.yan.testing.jpa.dao.IYanDao; import com.yan.testing.jpa.entity.Yan; @Repository(value="yanDao") public class YanDao implements IYanDao{ private EntityManager entityManager; @PersistenceContext public void setEntityManager(EntityManager entityManager) { this.entityManager = entityManager; } public Yan findById(Long id){ return entityManager.find(Yan.class, id); } } 

问题出在这里: "entityManager.find(Yan.class, id);" 抛出exception:

 Servlet.service() for servlet spring threw exception: org.hibernate.MappingException: Unknown entity: com.yan.testing.jpa.entity.Yan 

好像hibernate不认识我的实体。 由于我的实体是使用Jboss工具生成的,我在实体类中找不到任何错误。

下面是我的实体类:

 package com.yan.testing.jpa.entity; // default package // Generated Jul 27, 2011 4:15:52 PM by Hibernate Tools 3.4.0.CR1 import static javax.persistence.GenerationType.IDENTITY; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.Table; /** * Yan generated by hbm2java */ @Entity @Table(name = "yan", catalog = "fuhu_app_submission") public class Yan implements java.io.Serializable { private static final long serialVersionUID = -6812001362936479032L; private Integer objId; private String name; public Yan() { } public Yan(String name) { this.name = name; } @Id @GeneratedValue(strategy = IDENTITY) @Column(name = "obj_id", unique = true, nullable = false) public Integer getObjId() { return this.objId; } public void setObjId(Integer objId) { this.objId = objId; } @Column(name = "name", length = 45) public String getName() { return this.name; } public void setName(String name) { this.name = name; } } 

下面是我的应用程序和jboss作为7配置:

applicationContext.xml(基本上定义了entityManagerFactory bean)

                

JPA – persistence.xml中:

    Hibernate for JPA      

我的jboss confi standalone.xml:

     jdbc:mysql://127.0.0.1:3306/my_schema   com.mysql   TRANSACTION_READ_COMMITTED    root   root     32       com.mysql.jdbc.jdbc2.optional.MysqlXADataSource      

任何帮助或提示都表示赞赏。

谢谢

安德鲁

jpa-persistence.xml什么样的?

您需要使用元素列出要使用EntityManager映射的

@yzandrew:如果您不想在persistence.xml中添加每个实体类,它需要实体管理器工厂bean的属性“packagesToScan”。

  

实际上你甚至不需要persistence.xml,但这取决于你是否想要走那条路。

也发布全class​​。 错误基本上是说jpa找不到你的class级。