/** * Create a TidePersistenceManager * * @param create create if not existent (can be false for use in entity merge) * @return a TidePersistenceManager */ @Override protected TidePersistenceManager getTidePersistenceManager(boolean create) { if (!create) return null; EntityManager em = getEntityManager(); if (em == null) return null; return new JPAPersistenceManager(em); }
public Object getCurrentTransaction() { initEntityManager(); EntityTransaction et = entityManager.getTransaction(); // Try to get a local resource transaction et.begin(); return et; }
if (persistenceConfiguration.getEntityManagerFactoryJndiName() != null) { EntityManagerFactory emf = (EntityManagerFactory)ic.lookup(persistenceConfiguration.getEntityManagerFactoryJndiName()); return new JPAPersistenceManager(emf); return new JPAPersistenceManager(em); return null; return new JPAPersistenceManager(em);
/** * Finds the entity with the JPA context. * @return the entity with the JPA context. */ @Override public Object fetchEntity(Object entity, String[] fetch) { org.granite.util.Entity tideEntity = new org.granite.util.Entity(entity); Serializable id = (Serializable)tideEntity.getIdentifier(); if (id == null) return null; initEntityManager(); if (fetch == null || entityManager.getDelegate().getClass().getName().indexOf(".hibernate.") < 0) return entityManager.find(entity.getClass(), id); for (String f : fetch) { Query q = entityManager.createQuery("select e from " + entity.getClass().getName() + " e left join fetch e." + f + " where e = :entity"); q.setParameter("entity", entity); List<?> results = q.getResultList(); if (!results.isEmpty()) entity = results.get(0); else log.warn("Could not find entity %s to initialize, id: %s", entity.getClass().getName(), id); } return entity; }