请教Robbin一个Hibernate和EJB协作的问题
我在Weblogic8.1启动的时候将SessionFactory绑定到了JNDI上去。所有的持久化类及映射文件都打到一个包里HibernateCAT.jar。将该jar添加到Weblogic的启动文件的CLASSPATH上去。在一个EJB中,我按如下方式调用Hibernate:
SessionFactory sessionFactory;
Session session;
Transaction transaction;
try
{
//获取Session工厂
Context ctx = new InitialContext();
sessionFactory = (SessionFactoryImpl) ctx.lookup("hibernate");
//启动事务
session = sessionFactory.openSession();
transaction = session.beginTransaction();
}catch(Exception e)
{
System.out.println("启动事务的时候出错!");
e.printStackTrace();
return null;
}
//下面根据该JVTSession实现管理的值对象来判断,并分别调用Hibernate持久化框架的数据
//记录添加实现来完成记录的创建
if(managedEntityValue instanceof OrderBaseValue)
{
//to do...
OrderBase orderBase = new OrderBase();
OrderBaseValue orderValue = (OrderBaseValue)managedEntityValue;
orderBase.setId(orderValue.getOrderID());
orderBase.setName(orderValue.getName());
orderBase.setType(orderValue.getType());
orderBase.setCustid(orderValue.getCustID());
try
{
//开始添加记录
session.save(orderBase);
//提交并结束事务
transaction.commit();
}catch(Exception e)
{
try
{
transaction.rollback();
}catch(HibernateException he)
{
System.out.println("回滚事务出错!");
}
System.out.println("提交事务出错!");
e.printStackTrace() ;
}
}
该EJB作为一个独立的jar部署到Weblogic上。
编写一个测试该EJB的客户端运行出现如下错误:
net.sf.hibernate.MappingException: No persister for: com.huawei.ibss.po.OrderBas
e
at net.sf.hibernate.impl.SessionFactoryImpl.getPersister(SessionFactoryI
mpl.java:426)
at net.sf.hibernate.impl.SessionImpl.getPersister(SessionImpl.java:2248)
at net.sf.hibernate.impl.SessionImpl.getPersister(SessionImpl.java:2255)
at net.sf.hibernate.impl.SessionImpl.save(SessionImpl.java:601)
at com.huawei.ibss.ordermsg.OrderMsgJVTSessionBean.createManagedEntityBy
Value(OrderMsgJVTSessionBean.java:114)
at com.huawei.ibss.ordermsg.OrderMsgJVTSession_isibbm_EOImpl.createManag
edEntityByValue(OrderMsgJVTSession_isibbm_EOImpl.java:154)
at com.huawei.ibss.ordermsg.OrderMsgJVTSession_isibbm_EOImpl_WLSkel.invo
ke(Unknown Source)
at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:466)
at weblogic.rmi.cluster.ReplicaAwareServerRef.invoke(ReplicaAwareServerR
ef.java:108)
at weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:409)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(Authenticate
dSubject