Transformar SQL em HQL

Gostaria transformar este sql em jpql ou hql. Já morri de procura na internet e n acho nada a respeito, quero apenas a mesma funcionalidade em cada uma das queris. Não posso usar createSQLQuery(), nem createMativeQuery(). Segue abaixo os SQLS:


	private static final String SQL_EVOLUCAO_ASCENDENTE = "SELECT filho.no_portfolio"
			+ " FROM DBPORTFOLIO.tb_portfolio filho "
			+ " WHERE filho.co_seq_portfolio !=:codigo"
			+ " START WITH filho.co_seq_portfolio =:codigo"
			+ " CONNECT BY filho.co_seq_portfolio = PRIOR filho.co_portfolio_pai";

private static final String SQL_EVOLUCAO_DESCENDENTE = "SELECT filho.no_portfolio"
			+ " FROM DBPORTFOLIO.tb_portfolio filho "
			+ " WHERE filho.co_seq_portfolio !=:codigo"
			+ " START WITH filho.co_seq_portfolio =:codigo"
			+ " CONNECT BY PRIOR  filho.co_seq_portfolio = filho.co_portfolio_pai";

Usando essas querys no oracle funciona e traz o resultado que eu espero. Agora não vi nada que pode se assemelhar a CONNECT BY PRIOR para jpql. Estou perdido.

Se você não encontrou, é pq ñ existe. A linguagem JPQL tem um número menor de funções e recursos.

Honestamente eu nunca vi isso e nem sei para o que existe.

Não esquente a cabeça com casos complexos, você já tem a solução, usa SQL nativo.

Bom funcionou com entityManager.createNativeQuery(sql), mas ocorre outro problema que é o seguinte. Ele cria uma lista de java.lang.Object eu queria uma lista de Portfolio exemplo:

Query query = entityManager.createNativeQuery(sql);

List<Portfolio> evolucao = query.getResultList();

Eu queria que retornasse uma list de objetos do tipo Portfolio não java.lang.Object. Se alguém tiver alguma ideia.

Você pode usar NamedNativeQuery, SqlResultSetMapping ou ainda manualmente. Aqui tem exemplos: