我正在学习本书Java Persistence with Hibernate
,在第24页的PDF版本中有一个声明如下:
UserTransaction tx = TM.getUserTransaction();
我不知道TM
来自哪里。我用谷歌搜索了一段时间但找不到任何答案。因此,我无法在Netbeans中运行我的代码。
我还可以在代码中的某处看到JPA
。这也意味着什么?
感谢您的帮助
整个代码是:
public class HelloWorldJPA {
public static void main(String[] args){
try {
EntityManagerFactory emf = Persistence.createEntityManagerFactory("HelloWorldPU");
UserTransaction tx = TM.getUserTransaction();
try {
tx.begin();
} catch (NotSupportedException | SystemException ex) {
Logger.getLogger(HelloWorldJPA.class.getName()).log(Level.SEVERE, null, ex);
}
EntityManager em = emf.createEntityManager();
Message message = new Message();
message.setText("Hello World!");
em.persist(message);
tx.commit();
em.close();
} catch (HeuristicMixedException | HeuristicRollbackException | IllegalStateException | RollbackException | SecurityException | SystemException ex) {
Logger.getLogger(HelloWorldJPA.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
答案 0 :(得分:3)
您问题的精确解决方案
TM绝对是一个实例变量,通常为每个测试套件的单个数据库连接管理器设置
请从此link
查找TransactionManagerTest.java类
公共类TransactionManagerTest {
// Static single database connection manager per test suite
static public TransactionManagerSetup TM;
@Parameters({"database", "connectionURL"})
@BeforeSuite()
public void beforeSuite(@Optional String database,
@Optional String connectionURL) throws Exception {
TM = new TransactionManagerSetup(
database != null
? DatabaseProduct.valueOf(database.toUpperCase(Locale.US))
: DatabaseProduct.H2,
connectionURL
);
}
@AfterSuite(alwaysRun = true)
public void afterSuite() throws Exception {
if (TM != null)
TM.stop();
}
}
你会得到答案: - )