【发布时间】:2012-08-02 00:16:23
【问题描述】:
我在 Web 应用程序中使用 glassfish v2 和持久性。
我正在使用 Web 应用程序中的普通 java 类文件调用持久性代码
我可以使用此代码轻松选择:-
@PersistenceUnit
public EntityManagerFactory emf;
EntityManager em;
public List fname (String id) {
String fname = null;
List persons = null;
//private PersistenceManagerFactory persistenceManagerFactory;
try {
emf = Persistence.createEntityManagerFactory("WebApplicationSecurityPU");
em = emf.createEntityManager();
persons = em.createQuery("select r from Roleuser r").getResultList();
int i=0;
for (i=0;i<persons.size(); i++)
System.out.println("Testing n "+ i +" " + persons.get(i));
} catch(Exception e) {
System.out.println("" + e);
}
finally {
if(em != null) {
em.close();
}
}
return persons;
}
我想使用 JTA 进行更新,因为 persistence.xml 文件有 transaction-type="JTA"
当我尝试使用此代码进行更新时,我得到一个 nullPointerException,而日志中没有任何痕迹
@PersistenceUnit
public EntityManagerFactory emf;
EntityManager em;
Context context;
@Resource
private UserTransaction utx;
public List fname (String id) {
String fname = null;
List persons = null;
try {
emf = Persistence.createEntityManagerFactory("WebApplicationSecurityPU");
utx.begin();
em = emf.createEntityManager();
int m = em.createQuery("update Roleuser r set r.firstName = 'Jignesh I' where r.userID=9").executeUpdate();
utx.commit();
} catch(Exception e) {
System.out.println("" + e);
}
finally {
if(em != null) {
em.close();
}
}
return persons;
}
任何帮助
谢谢
普拉迪特
【问题讨论】:
-
您尝试在哪个类中注入
UserTransaction?另外,请添加完整的堆栈跟踪... -
我没有初始化 utx !!!....我正在寻找但找不到任何代码....任何帮助
-
我得到的只是一个 nullPointerException,日志中没有任何痕迹