【发布时间】:2012-03-26 20:36:27
【问题描述】:
我正在尝试使用 JSF 和 EJB 3.0 创建一个 Web 应用程序。
我使用普通的 JSF、Glassfish 服务器、Hibernate 作为我的持久性提供程序。我的数据库是 apache derby。
这里我的无状态会话 bean 如下:
@Stateless
@TransactionManagement(TransactionManagementType.CONTAINER)
public class StudentServiceBean implements StudentService{
@PersistenceContext(unitName="forPractise")
private EntityManager entityMgr;
@Resource
private SessionContext sessionContext;
@Override
public List<StudentVO> fetchStudentListOrderByStudentId(boolean flag){
List<StudentEntity> studentList = null;
TypedQuery<StudentEntity> studentQuery = null;
List<StudentVO> studentVOList = null;
String queryDesc = "select s from StudentEntity s order by s.studentId desc";
String query = "select s from StudentEntity s order by s.studentId";
try{
if(!flag){
studentQuery = entityMgr.createQuery(query,StudentEntity.class);
}else{
studentQuery = entityMgr.createQuery(queryDesc,StudentEntity.class);
}
studentList = studentQuery.getResultList();
studentVOList = new ArrayList<StudentVO>();
for(StudentEntity studentE : studentList){
studentVOList.add(new StudentVO(String.valueOf(studentE.getStudentId()),studentE.getStudentName(),studentE.getContactNumber()));
}
}catch(Exception e){
System.out.println(" EXCEPTION IN "+this.getClass().getName()+" in method fetchStudentListOrderByStudentId "+e);
}
return studentVOList;
}
这是我的 persistence.xml:
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
version="2.0">
<persistence-unit name="forPractise" transaction-type="JTA">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>jdbc/app</jta-data-source>
<class>com.entity.StudentEntity</class>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.DerbyDialect" />
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.format_sql" value="true" />
<property name="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.SunONETransactionManagerLookup" />
</properties>
</persistence-unit>
</persistence>
在加载 JSP 页面时,会调用 StudentList 的 getter 方法 -
在 getter 方法中,我编写了逻辑,如果 studentList 为空,则调用 studentService.fetchStudentListOrderByStudentId(true);。
但是当我这样做时,我得到了一个例外:
com.bb.StudentServiceBean 方法中的异常 fetchStudentListOrderByStudentId org.hibernate.service.UnknownServiceException:未知服务 请求 [org.hibernate.service.jdbc.connections.spi.ConnectionProvider]
你能告诉我我错过了什么,或者我哪里出错了吗?
谢谢。
【问题讨论】:
-
您是否链接到 Hibernate 4.x 库?
-
是的,在类路径中有 r hibernate 4 个 jar,除了一个,我已经从类路径中删除了 jboss-transaction jar,因为我正在使用 Glassfish,
标签: java hibernate jpa ejb-3.0 jpa-2.0