簡體   English   中英

帶有'case at exists'的JPA @Query不適用於Hibernate

[英]JPA @Query with 'case when exists' does not work with Hibernate

我有一個帶有以下方法的@Repository接口,用於檢查IF數據庫是否包含與我即將保留的記錄沖突(在業務域意義上)(我不關心碰撞記錄是什么):

@Query("select case when exists (
            select me from MyEntity me where {my conditions regarding someParam here}
        ) then true else false end from MyEntity")
boolean findColliding(@Param("someParam") String someParam);

關於這一點我運行它是空的(PostgreSQL的)表因此存在不子查詢應該找到任何東西,我相信作為案例指出,如果存在,否則為false只能返回true整個方法應返回false。

它返回null #facepalm

我的查詢在啟動時傳遞查詢語法檢查(沒有QuerySyntaxException)但在執行時拋出異常:

org.springframework.aop.AopInvocationException: Null return value from advice does not match primitive return type for: public abstract boolean findColliding(...)

我究竟做錯了什么? 我應該采取其他方法解決我的問題嗎?

Hibernate 5.0.11.Final

JPA 2.1 CASE表達式僅支持標量表達式 ,而不支持查詢。

有關更多詳細信息,請查看JPA規范

如果數據庫支持此語法,則需要使用本機SQL查詢

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM