Java Liferay中的休眠错误

Java Liferay中的休眠错误,java,hibernate,transactions,liferay,liferay-6,Java,Hibernate,Transactions,Liferay,Liferay 6,我正在使用liferay,下面是我在其中的类和方法: EmployeeLocalServiceImpl.java 公共类EmployeeLocalServiceImpl扩展了EmployeeLocalServiceBaseImpl{ /* *开发者注意: * *永远不要直接引用此接口。始终使用{@link com.mallyas.carbServer.emco.mis.service.EmployeeLocalServiceUtil}访问员工本地服务。 */ public List getEmp

我正在使用liferay,下面是我在其中的类和方法:

EmployeeLocalServiceImpl.java

公共类EmployeeLocalServiceImpl扩展了EmployeeLocalServiceBaseImpl{
/*
*开发者注意:
*
*永远不要直接引用此接口。始终使用{@link com.mallyas.carbServer.emco.mis.service.EmployeeLocalServiceUtil}访问员工本地服务。
*/
public List getEmployee()引发PortalException、SystemException、RemoteException{
返回EmployeeFinderUtil.getEmployee();
}
...
}
EmployeeFinderImpl.java

公共类EmployeeFinderImpl扩展BasePersistenceImpl实现EmployeeFinder{
//查询的名称
公共静态字符串GET_EMPLOYEE=“getemployee”;
//将从ServiceImpl类调用的方法
公共列表getEmployee()引发系统异常{
会话=空;
试一试{
//打开一个新的hibernate会话
session=openSession();
字符串fetchEmpsqlquery=CustomSQLUtil.get(get\u EMPLOYEE);
//创建一个SQLQuery对象
SQLQuery empqueryObj=session.createSQLQuery(fetchEmpsqlquery);
//用完全限定的java类替换查询字符串中的“Book”
//这必须是hibernate表名
empqueryObj.附录(“员工”,员工雇佣类别);
//获取查询位置实例
QueryPos qPos=QueryPos.getInstance(empqueryObj);
//填写自定义查询的“”值
//这与形成一份事先准备好的声明是一样的
//添加(模式);
//执行查询并从数据库返回一个列表
return(List)empqueryObj.List();
/*
//如果要返回行数(计数),请使用此块
int行=0;
迭代器itr=q.list().Iterator();
if(itr.hasNext()){Long count=itr.next();
如果(count!=null){rows=count.intValue();}
返回行;
*/
}捕获(例外e){
抛出新的系统异常(e);
}最后{
闭门会议(会议);
}
}
...
}
EmployeeFinder.java

@Transactional
公共接口EmployeeFinder{
public java.util.List getEmployee()
抛出com.liferay.portal.kernel.exception.SystemException;
}
EmployeeFinderUtil.java

@Transactional
公共类EmployeeFinderUtil{
公共静态java.util.List getEmployee()
抛出com.liferay.portal.kernel.exception.SystemException{
返回getFinder().getEmployee();
}
公共静态EmployeeFinder getFinder(){
如果(_finder==null){
_finder=(EmployeeFinder)PortletBeanLocatorUtil.locate(com.mallyas.carbServer.emco.mis.service.ClpSerializer.getServletContextName(),
EmployeeFinder.class.getName());
ReferenceRegistry.registerReference(EmployeeFinderUtil.class、,
“_finder”);
}
返回查找器;
}
公共无效设置查找器(EmployeeFinder){
_查找器=查找器;
registerReference(EmployeeFinderUtil.class,“_finder”);
}
私人静态EmployeeFinder\u finder;
运行此应用程序时,出现以下错误:

ERROR[http-bio-8080-exec-9][render_portlet_jsp:154]com.liferay.portal.kernel.exception.SystemException:org.hibernate.hibernateeexception:没有绑定到线程的hibernate会话,配置不允许在此创建非事务会话
在com.mallyas.carbServer.emco.mis.service.persistence.EmployeeFinderImpl.getEmployee(EmployeeFinderImpl.java:69)上
位于com.liferay.portal.dao.shard.advice.shardPersistenceReadvice.invoke(shardPersistenceReadvice.java:52)
在com.mallyas.carbServer.emco.mis.service.persistence.EmployeeFinderUtil.getEmployee(EmployeeFinderUtil.java:29)
在com.mallyas.carbServer.emco.mis.service.impl.EmployeeLocalServiceImpl.getEmployee(EmployeeLocalServiceImpl.java:61)
位于org.apache.jsp.admin.displayData.dbcheck\u jsp.\u jsp服务(dbcheck\u jsp.java:172)
位于org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
位于javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
位于org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
位于org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
位于org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
位于javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
位于org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
位于org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
位于com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:72)
位于com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116)
位于com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilter.doFilter(InvokerFilter.java:73)
位于org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
位于org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
位于org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:684)
位于org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:593)
可能出了什么问题?
我在上面的每个类中都包含了@Transactional,我也尝试从所有类中删除@Transactional,但仍然得到相同的错误。

尝试在hiber中添加以下属性
<prop key="hibernate.current_session_context_class">thread</prop>
    public List<Employee> getEmployeeByCustom(.....) 
        throws SystemException {

    return EmployeeFinderUtil.getEmployeeByCustom(....);

}
public class EmployeeLocalServiceImpl extends EmployeeLocalServiceBaseImpl {
    /*
     * NOTE FOR DEVELOPERS:
     *
     * Never reference this interface directly. Always use {@link com.mallyas.corpserver.emco.mis.service.EmployeeLocalServiceUtil} to access the employee local service.
     */

    public List getEmployee() throws PortalException, SystemException, RemoteException {

        return employeeFinder.getEmployee();
    }
 ...
}