JpaRepository - Hibernate - java .math.BigInteger не может быть преобразован в java .lang.Boolean - PullRequest
0 голосов
/ 05 мая 2020

Я следовал этому руководству https://codingexplained.com/coding/java/spring-framework/return-boolean-value-from-spring-data-jpa-query, и там он объясняет, как вернуть логический тип из JpaRepository, чтобы вот что было сделано:

    @Transactional
    @Override
    @Query(value = "SELECT CASE WHEN COUNT(*) = 1 THEN true ELSE false END FROM admins WHERE admins.admin_name = 'admin' AND admins.password = 'admin'", nativeQuery = true)
    boolean IsBaseAdminAccountExist();

и эта штука бросает exception is java.lang.ClassCastException: java.math.BigInteger cannot be cast to java.lang.Boolean

1 Ответ

0 голосов
/ 05 мая 2020

Здесь нет причин использовать собственный запрос. select case поддерживается в JPQL, начиная с JPA 2.0.

Более того, этот запрос доступен только для чтения, поэтому @Transactional не требуется

Попробуйте это

    @Override
    @Query(value = "SELECT CASE WHEN COUNT(*) = 1 THEN true ELSE false END FROM admins a WHERE a.adminName = 'admin' AND a.password = 'admin'")
    boolean IsBaseAdminAccountExist();

I здесь предполагается, что admin_name - это имя столбца в db, но в вашей сущности поле следует java соглашению об именах adminName ...

...