【发布时间】:2011-12-22 01:03:51
【问题描述】:
我有一个实用程序类,如下所示。我希望能够将此类与 RESOURCE_LOCAL 或 JTA 持久性单元一起使用。如果我将 persistence.xml 从 JTA 更改为 RESOURCE_LOCAL,我不应该更改代码。
我尝试使用 EntityManager.getTransaction() 来查看是否存在活动事务,但如果使用 JTA,则调用 getTransaction() 会引发异常。我可以用 try/catch 包围对 getTransaction() 的调用,但我不想为此求助于异常处理。 EntityManager.getProperties() 不显示任何指示 JTA 或 RESOURCE_LOCAL
我需要一些方法来告诉 EntityManager(或 EntityManagerFactory)在下面的代码中使用什么类型的持久性单元。
public class CredentialsUtil {
public static final String VGBD_PU = "VGDBpu";
static Logger logger = Logger.getLogger(CredentialsUtilStatic.class);
static EntityManagerFactory emf = Persistence.createEntityManagerFactory(VGBD_PU);
public static final String sharedKey="pgpsympwd";
public static String getPassword(String username) {
String selectStr = "select pgp_sym_decrypt(pgpsympassword, '" + sharedKey + "') from credentials where username='" + username + "'";
EntityManager em =null;
String password = "";
try {
em = emf.createEntityManager();
java.util.Map<java.lang.String,java.lang.Object> propMap = em.getProperties();
logger.info(propMap.keySet().size() + " properties");
for (String key : propMap.keySet())
logger.info(key + ", " + propMap.get(key));
EntityTransaction tx = em.getTransaction(); ...
【问题讨论】:
标签: jpa jta entitymanager