在play framework 1.x中使用多线程,如果涉及到要调用主线程中的jpa对象进行操作,那么需要引用到play框架附带的jpa类。
class Runner extends Runnable {
@Override
public void run() {
if (JPA.local.get() == null) {
EntityManager em = JPA.newEntityManager();
final JPA jpa = new JPA();
jpa.entityManager = em;
JPA.local.set(jpa);
}
JPA.em().getTransaction().begin();
//正常对jpa对象进行操作
JPA.em().getTransaction().commit();
}
}
也可以使用play提供的JPAPlugin进行配置和调用:
class Runner extends Runnable {
@Override
public void run() {
JPAPlugin.startTx(false);
//正常对jpa对象进行操作
JPAPlugin.endTx(false);
}
}