Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @Transactional
- public boolean generateLogsComposite() {
- Connection conn = getConnection();
- writeSomeData(conn);//write some data using a separate connection
- boolean isNew = checkSomeData();//The check works with the data from writeSomeData although not using he connection conn
- if(isNew) {
- generateEmail(conn);//Calls a stored procedure on connection conn.
- updateRunEnvOnEmail(emailId, runEnv);
- //Now the data from generateEmail and updateRunEnvOnEmail is present
- } else {
- updateSomething();//has a javax.persistence.TransactionRequiredException: Executing an update/delete query
- }
- }
- private void joinTransaction() {
- try {
- //HACK vs javax.persistence.TransactionRequiredException: Executing an update/delete query
- entityManager.joinTransaction();
- logger.debug("Joined transaction successfully");
- } catch(Throwable t) {
- //java.lang.IllegalStateException: Not allowed to join transaction on shared EntityManager
- }
- }
- @Transactional
- public void updateRunEnvOnEmail(Long emailId, String runEnv)
- {
- try
- {
- //HACK vs javax.persistence.TransactionRequiredException: Executing an update/delete query
- joinTransaction();
- Query query = entityManager
- .createNativeQuery("update XXX.EMAIL e set e.RUN_ENVIRONMENT = :runEnv where e.EMAIL_ID = :emailId");
- query.setParameter("runEnv", runEnv);
- query.setParameter("emailId", emailId);
- query.executeUpdate();
- } catch (Exception e)
- {
- logger.debug("Error while updating RUN_ENVIRONMENT on Email : "
- + emailId + " ::: " + e);
- }
- }
- @Transactional
- public void updateSomething()
- {
- try
- {
- //HACK vs javax.persistence.TransactionRequiredException: Executing an update/delete query
- joinTransaction();
- Query query = entityManager
- .createNativeQuery("update something");
- query.executeUpdate();
- } catch (Exception e)
- {
- logger.debug("Error while updating something",e);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement