javax.persistence.EntityManager#unwrap ( )源码实例Demo

下面列出了javax.persistence.EntityManager#unwrap ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

@Override
@Nullable
public Object beginTransaction(EntityManager entityManager, TransactionDefinition definition)
		throws PersistenceException, SQLException, TransactionException {

	if (definition.getIsolationLevel() != TransactionDefinition.ISOLATION_DEFAULT) {
		// Pass custom isolation level on to EclipseLink's DatabaseLogin configuration
		// (since Spring 4.1.2)
		UnitOfWork uow = entityManager.unwrap(UnitOfWork.class);
		uow.getLogin().setTransactionIsolation(definition.getIsolationLevel());
	}

	entityManager.getTransaction().begin();

	if (!definition.isReadOnly() && !this.lazyDatabaseTransaction) {
		// Begin an early transaction to force EclipseLink to get a JDBC Connection
		// so that Spring can manage transactions with JDBC as well as EclipseLink.
		entityManager.unwrap(UnitOfWork.class).beginEarlyTransaction();
	}

	return null;
}
 
源代码2 项目: HibernateTips   文件: TestStream.java
@Test
public void resultsAsList() {
	log.info("... resultsAsList ...");

	EntityManager em = emf.createEntityManager();
	em.getTransaction().begin();
	Session session = em.unwrap(Session.class);
	
	List<Book> books = session.createQuery("SELECT b FROM Book b", Book.class).getResultList();
	books.stream()
	    .map(b -> b.getTitle() + " was published on " + b.getPublishingDate())
	    .forEach(m -> log.info(m));
	
	em.getTransaction().commit();		
	em.close();
}
 
private static void updateNaturalId(EntityManagerFactory emf, Map<String, Counts> counts) {
    Statistics stats = getStatistics(emf);

    EntityManager em = emf.createEntityManager();
    EntityTransaction transaction = em.getTransaction();
    transaction.begin();

    final Session session = em.unwrap(Session.class);
    final NaturalIdLoadAccess<Citizen> loader = session.byNaturalId(Citizen.class);
    loader.using("ssn", "45989213T");
    Citizen citizen = loader.load();
    String expected = "Stark";
    if (!citizen.getLastname().equals(expected))
        throw new RuntimeException("Incorrect citizen: " + citizen.getLastname() + ", expected: " + expected);

    citizen.setSsn("78902007R");

    transaction.commit();
    em.close();

    assertRegionStats(counts, stats);
}
 
private static void verifyFindCitizenByNaturalId(EntityManagerFactory emf, String ssn, String expectedLastName,
        Map<String, Counts> counts) {
    Statistics stats = getStatistics(emf);

    EntityManager em = emf.createEntityManager();
    EntityTransaction transaction = em.getTransaction();
    transaction.begin();

    final Session session = em.unwrap(Session.class);
    final NaturalIdLoadAccess<Citizen> loader = session.byNaturalId(Citizen.class);
    loader.using("ssn", ssn);
    Citizen citizen = loader.load();
    if (!citizen.getLastname().equals(expectedLastName))
        throw new RuntimeException("Incorrect citizen: " + citizen.getLastname() + ", expected: " + expectedLastName);

    transaction.commit();
    em.close();

    assertRegionStats(counts, stats);
}
 
源代码5 项目: quarkus   文件: UserEntityIdentityProvider.java
@Override
public SecurityIdentity authenticate(EntityManager em,
        UsernamePasswordAuthenticationRequest request) {

    Session session = em.unwrap(Session.class);
    SimpleNaturalIdLoadAccess<PlainUserEntity> naturalIdLoadAccess = session.bySimpleNaturalId(PlainUserEntity.class);
    PlainUserEntity user = naturalIdLoadAccess.load(request.getUsername());
    //        Query query = em.createQuery("FROM PlainUserEntity WHERE name = :name");
    //        query.setParameter("name", request.getUsername());
    //        PlainUserEntity user = getSingleUser(query);
    if (user == null)
        return null;

    // for MCF:
    //               Password storedPassword = getMcfPasword(user.pass);
    // for clear:
    Password storedPassword = getClearPassword(user.pass);

    QuarkusSecurityIdentity.Builder builder = checkPassword(storedPassword, request);

    addRoles(builder, user.role);
    return builder.build();
}
 
源代码6 项目: lams   文件: EclipseLinkJpaDialect.java
@Override
public Object beginTransaction(EntityManager entityManager, TransactionDefinition definition)
		throws PersistenceException, SQLException, TransactionException {

	if (definition.getIsolationLevel() != TransactionDefinition.ISOLATION_DEFAULT) {
		// Pass custom isolation level on to EclipseLink's DatabaseLogin configuration
		// (since Spring 4.1.2)
		UnitOfWork uow = entityManager.unwrap(UnitOfWork.class);
		uow.getLogin().setTransactionIsolation(definition.getIsolationLevel());
	}

	entityManager.getTransaction().begin();

	if (!definition.isReadOnly() && !this.lazyDatabaseTransaction) {
		// Begin an early transaction to force EclipseLink to get a JDBC Connection
		// so that Spring can manage transactions with JDBC as well as EclipseLink.
		entityManager.unwrap(UnitOfWork.class).beginEarlyTransaction();
	}

	return null;
}
 
源代码7 项目: HibernateTips   文件: TestQueryCache.java
@Test
public void selectAuthors() {
	log.info("... selectAuthors ...");

	EntityManager em = emf.createEntityManager();
	em.getTransaction().begin();

	Session s = em.unwrap(Session.class);
	Query<Author> q = s.createQuery("SELECT a FROM Author a WHERE id = :id", Author.class);
	q.setParameter("id", 1L);
	q.setCacheable(true);
	log.info(q.getSingleResult());
	
	log.info(q.getSingleResult());

	em.getTransaction().commit();
	em.close();
}
 
@Override
public Object beginTransaction(EntityManager entityManager, TransactionDefinition definition)
		throws PersistenceException, SQLException, TransactionException {

	if (definition.getIsolationLevel() != TransactionDefinition.ISOLATION_DEFAULT) {
		// Pass custom isolation level on to EclipseLink's DatabaseLogin configuration
		// (since Spring 4.1.2)
		UnitOfWork uow = entityManager.unwrap(UnitOfWork.class);
		uow.getLogin().setTransactionIsolation(definition.getIsolationLevel());
	}

	entityManager.getTransaction().begin();

	if (!definition.isReadOnly() && !this.lazyDatabaseTransaction) {
		// Begin an early transaction to force EclipseLink to get a JDBC Connection
		// so that Spring can manage transactions with JDBC as well as EclipseLink.
		entityManager.unwrap(UnitOfWork.class).beginEarlyTransaction();
	}

	return null;
}
 
源代码9 项目: rqueue   文件: FailureDetailRepositoryImpl.java
@Override
public <S extends FailureDetail> S save(S entity) {
  EntityManager entityManager = entityManagerFactory.createEntityManager();
  Session session = entityManager.unwrap(Session.class);
  Transaction tx = session.beginTransaction();
  if (entity.getFailureCount() == 0) {
    session.save(entity);
  } else {
    session.update(entity);
  }
  tx.commit();
  return entity;
}
 
protected void executeDML(EntityManager entityManager, String... sqls) {
    Session session = entityManager.unwrap(Session.class);
    for (String sql : sqls) {
        try {
            session.doWork(connection -> {
                executeStatement(connection, sql);
            });
        } catch (Exception e) {
            LOGGER.error(
                    String.format("Error executing statement: %s", sql), e
            );
        }
    }
}
 
private static void verifyEntities(EntityManager entityManager, Class<?> entityClass) {
  Session session = entityManager.unwrap(Session.class);
  List<?> entityList =
      session.createQuery(
          "from " + entityClass.getSimpleName(), entityClass).list();
  assertThat(entityList).hasSize(1);
}
 
源代码12 项目: HibernateTips   文件: TestNaturalId.java
@Test
public void simpleNaturalId() {
	log.info("... simpleNaturalId ...");

	EntityManager em = emf.createEntityManager();
	em.getTransaction().begin();
	Session session = em.unwrap(Session.class);

	Book b = session.bySimpleNaturalId(Book.class)
			.load("123-4567890123");
	Assert.assertEquals(new Long(1), b.getId());

	em.getTransaction().commit();
	em.close();
}
 
private Session createEntityManagerWithStatsCleared() {
   EntityManager em = emf.createEntityManager();
   emf.unwrap(SessionFactory.class).getStatistics().clear();
   // JPA's EntityManager is not AutoCloseable,
   // but Hibernate's Session is,
   // so unwrap it to make it easier to close after use.
   return em.unwrap(Session.class);
}
 
源代码14 项目: BotLibre   文件: DatabaseReadOnlyNetwork.java
public DatabaseReadOnlyNetwork(EntityManager entityManager, boolean isShortTerm) {
	super(new EntityManagerImpl(entityManager.unwrap(ServerSession.class), SynchronizationType.UNSYNCHRONIZED), isShortTerm);
	ServerSession server = entityManager.unwrap(ServerSession.class);
	if (!server.getProperties().containsKey("network")) {
		server.setProperty("network", this);
	}
}
 
源代码15 项目: mycore   文件: MCRHIBConnection.java
/**
 * This method returns the current session for queries on the database through hibernate
 * 
 * @return Session current session object
 */
public Session getSession() {
    EntityManager currentEntityManager = MCREntityManagerProvider.getCurrentEntityManager();
    Session session = currentEntityManager.unwrap(Session.class);
    if (!session.isOpen()) {
        LOGGER.warn("Hibernate session {} is closed.", Integer.toHexString(session.hashCode()));
    }
    if (LOGGER.isDebugEnabled()) {
        LOGGER.debug("Returning session: {} open: {}", Integer.toHexString(session.hashCode()), session.isOpen());
    }
    return session;
}
 
源代码16 项目: AIDR   文件: CommonOperations.java
public Session getCurrentSession(EntityManager em) {
	try { 
		return em.unwrap(Session.class);
	} catch (Exception e) {
		logger.error("Error in getCurrentSession()", e);
	}
	return null;
}
 
@Override
protected Query getEntityQuery1(EntityManager entityManager) {
    Session session = entityManager.unwrap(Session.class);
    return session.getNamedQuery(QUERY_NAME_1);
}
 
源代码18 项目: cuba   文件: CubaEclipseLinkJpaDialect.java
@Override
public Object beginTransaction(EntityManager entityManager, TransactionDefinition definition) throws PersistenceException, SQLException, TransactionException {
    Object result = super.beginTransaction(entityManager, definition);
    Preconditions.checkState(result == null, "Transactional data should be null for EclipseLink dialect");

    // Read default timeout every time - may be somebody wants to change it on the fly
    int defaultTimeout = 0;
    String defaultTimeoutProp = AppContext.getProperty("cuba.defaultQueryTimeoutSec");
    if (!"0".equals(defaultTimeoutProp) && !StringUtils.isBlank(defaultTimeoutProp)) {
        try {
            defaultTimeout = Integer.parseInt(defaultTimeoutProp);
        } catch (NumberFormatException e) {
            log.error("Invalid cuba.defaultQueryTimeoutSec value", e);
        }
    }

    int timeoutSec = 0;
    if (definition.getTimeout() != TransactionDefinition.TIMEOUT_DEFAULT)
        timeoutSec = definition.getTimeout();
    else if (defaultTimeout != 0)
        timeoutSec = defaultTimeout;

    if (timeoutSec != 0) {
        log.trace("Applying query timeout {} sec", timeoutSec);
        if (entityManager instanceof JpaEntityManager) {
            UnitOfWork unitOfWork = ((JpaEntityManager) entityManager).getUnitOfWork();
            if (unitOfWork != null) {
                //setup delay in seconds on unit of work
                unitOfWork.setQueryTimeoutDefault(timeoutSec);
            }
        }

        String s = DbmsSpecificFactory.getDbmsFeatures().getTransactionTimeoutStatement();
        if (s != null) {
            Connection connection = entityManager.unwrap(Connection.class);
            try (Statement statement = connection.createStatement()) {
                statement.execute(String.format(s, timeoutSec * 1000));
            }
        }
    }

    return new CubaEclipseLinkTransactionData(entityManager);
}
 
protected Session getSession(EntityManager entityManager) {
	return entityManager.unwrap(Session.class);
}
 
源代码20 项目: spring-data-jpa-extra   文件: QueryBuilder.java
public static SQLQuery toSQLQuery(EntityManager em, String nativeQuery, Object beanOrMap) {
    Session session = em.unwrap(Session.class);
    SQLQuery query = session.createSQLQuery(nativeQuery);
    setParams(query, beanOrMap);
    return query;
}