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.