0
oracle, sqlserver 및 postgres와 호환되는 "jsf + spring + jpa"소프트웨어가 있습니다. 그러나 현재 페이징 할 때 문제가 발생했습니다. Postgres 데이터베이스에 대해 생성 된 쿼리는 Postgress와 호환되지 않는 TOP() 절을 만듭니다. TOP 대신 LIMMIT을 생성하는 방법이 궁금합니다.HQL이 Postgres 데이터베이스에 TOP() 절을 생성합니다.
@Query("SELECT new br.com.governa.admin.comum.entidade.visao.PessoaFisicaVisao("
+ "pessoaFisica.id, "
+ "pessoaFisica.nome, "
+ "pessoaFisica.cpf, "
+ "pessoaFisica.dataNascimento, "
+ "pessoaFisica.nomeMae) "
+ "FROM PessoaFisica pessoaFisica "
+ "WHERE upper(pessoaFisica.nome) like %:nome% "
+ "AND upper(pessoaFisica.cpf) like %:cpf% "
+ "AND upper(pessoaFisica.rg) like %:rg% "
+ "AND (pessoaFisica.dataNascimento = :dataNascimento OR :dataNascimentoStr = null) "
+ "AND upper(pessoaFisica.nomeMae) like %:nomeMae% ")
Page<PessoaFisicaVisao> findPessoaFisicaVisaoPaginado(
@Param("nome") String nome, @Param("cpf") String cpf,
@Param("rg") String rg, @Param("dataNascimento") Date dataNascimento,
@Param("dataNascimentoStr") String dataNascimentoStr, @Param("nomeMae") String nomeMAe,
Pageable pageable)
봄 쿼리 주석이 JPQL
select
TOP(10) -- is not recognized PostGres SQL
pessoafisi0_.id as col_0_0_,
pessoafisi0_1_.nome as col_1_0_,
pessoafisi0_.cpf as col_2_0_,
pessoafisi0_.data_nascimento as col_3_0_,
pessoafisi0_.nome_mae as col_4_0_
from
admin.PESSOA_FISICA pessoafisi0_
inner join
admin.PESSOA pessoafisi0_1_
on pessoafisi0_.id=pessoafisi0_1_.id
where
(
upper(pessoafisi0_1_.nome) like ?
)
and (
upper(pessoafisi0_.cpf) like ?
)
and (
upper(pessoafisi0_.rg) like ?
)
and (
pessoafisi0_.data_nascimento=?
or ? is null
)
and (
upper(pessoafisi0_.nome_mae) like ?
)
order by
pessoafisi0_1_.nome,
pessoafisi0_.cpf asc
내가 사용하고 생성하는 : 4.2 최대 절전 모드에서 JPA 2.1 봄 4.0.5