1

I am trying get Hibernate session with

entityManager.unwrap(Session.class);

But it keeps giving error:

error: cannot access EntityManager

Here is class structure:

@Service
@AllArgsConstructor
@Log4j2
@Transactional(readOnly = true)
public class ExternalSystemServiceImpl implements ExternalSystemService {

    private EntityManager realEntityManager;
    ...
    @PersistenceContext(unitName = "hist")
    private EntityManager historyEntityManager;
    ...
    ...
    ...
  @Override
    public ExternalSystemResultDTO getExternalSystemResultByQuery(String vehId, ExternalQueryDTO externalQueryDTO, boolean queryFromHistDB, String type) {

        String queryText = externalQueryDTO.getQueryText();
        queryText = tools.replString(queryText, "REPLACE_VEH_ID", vehId);

        if (queryFromHistDB) {
            Session session = realEntityManager.unwrap(Session.class);
            List<Object[]> resultList = session.createNativeQuery(queryText, Object[].class).setTupleTransformer(new AliasToBeanResultTransformer<>(Object[].class)).getResultList();

            return handleExternalQueryTupleResult(externalQueryDTO, resultList , queryFromHistDB, type);
        } else {
            Session session = historyEntityManager.unwrap(Session.class);
            List<Object[]> resultList = session.createNativeQuery(queryText, Object[].class).setTupleTransformer(new AliasToBeanResultTransformer<>(Object[].class)).getResultList();

            return handleExternalQueryTupleResult(externalQueryDTO, resultList , queryFromHistDB, type);
        }
    }
}

This error occurred after adding core dependency of Hibernate 6.1.3.Final. I need that dependency for to be able to use subquery in from and join clauses. Latest Hibernate version provides that functionality.

Erdel
  • 370
  • 3
  • 16
  • There is a solution in here! https://stackoverflow.com/questions/73257636/using-hibernate-6-x-with-spring-boot-2-7-x-not-working – Erdel Nov 23 '22 at 19:28

0 Answers0