jpa 无法将类java.math.BigInteger强制转换为类java.lang.Boolean

xzlaal3s  于 2022-11-14  发布在  Java
关注(0)|答案(2)|浏览(540)

我试图检查该建筑物中的房间名称是否存在。如果存在,则不保存,否则将数据保存到表中。因此,我编写了此查询。

@Query(value = "select exists(select name,building from meetingroom " +
            "where building=?1 and name=?2)",nativeQuery = true)
Boolean existsByRoom(String building,String name);

现在它显示BigInteger不能被转换为类java.lang.Boolean。有没有什么方法可以解决这个问题而不影响或改变查询。

q3aa0525

q3aa05251#

这里最简单的解决方案是使用JPA派生查询。

Boolean existsMeetingRoomByBuildingAndName(String building, String name);
pqwbnv8z

pqwbnv8z2#

一个解决方案是使用java.util.Optional,如下所示。您需要使用BigInteger而不是Boolean,因为当记录存在时,查询将返回BigInteger值。

@Query(value = "select exists(select name,building from meetingroom " +
                    "where building=?1 and name=?2)",nativeQuery = true)
    Optional<BigInteger> existsByRoom(String building,String name);

在服务层中,您可以检查该值是否存在。

Optional<BigInteger> result = 
meetingRoomRepository.existsByRoom(meetingRoomRequest.getBuilding(),meetingRoomRequest.getName());
    if(result.isPresent()){
        return true;
    }
    return false;

相关问题