查看一下本地接口中的findById()方法

解决方案 »

  1.   

    Caused by: javax.persistence.PersistenceException: org.hibernate.HibernateException: The chosen transaction strategy requires access to the JTA TransactionManager
    你的事务管理有问题?
      

  2.   

    你的测试类是在调用的SessionBean而你的SessionBean是在调用EntityBean,这个方式调用的是本地调用里面的数据是无法被远程调用出来的,可以在外部写个JavaBean然后在EntityBean中将数据放在这个javabean中,在将javabean放在一个ArrayList或Vector中,在远程返回的时候就返回这个集合就可以了 ,你可以试下
      

  3.   

    谢谢各位关心,找到了问题了;因为EntityManager一直为空
    而EntityManager为空的原因是 
    persistence unit受Java EE事务(取值JTA)管理并与之集成
    此属性在Java EE环境中的默认值是JTA
    而在Java SE环境中则为RESOURCE_LOCAL
    而我的是java se 环境,所以设置的JTA事务出错;使用RESOURCE_LOCAL就没有问题了;
    JTA 和 RESOURCE_LOCAL 两种事务管理有多大区别呢??<?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_1_0.xsd" version="1.0">
        
    <persistence-unit name="ejbttt" transaction-type="RESOURCE_LOCAL">
       <non-jta-data-source>java:/MySqlDS</non-jta-data-source>
    </persistence-unit>
      
    </persistence>