是否可以在自定義查詢中使用輸入作為邏輯運算子?我創建了自定義查詢,它回傳面積小于或等于引數的物件串列:
@Query(value = "SELECT * FROM SHAPES WHERE COUNT_AREA(TYPE, RADIUS, WIDTH, HEIGHT) <= ?1", nativeQuery = true)
List<ShapeEntity> getObjectsWithArea(double area);
但是否可以再添加一個引數而不是“<=”?我想添加邏輯運算子作為輸入以避免有兩個類似的查詢,例如:
@Query(value = "SELECT * FROM SHAPES WHERE COUNT_AREA(TYPE, RADIUS, WIDTH, HEIGHT) ?1 ?2", nativeQuery = true)
List<ShapeEntity> getObjectsWithArea(String operator, double area);
而不是幾乎等于:
@Query(value = "SELECT * FROM SHAPES WHERE COUNT_AREA(TYPE, RADIUS, WIDTH, HEIGHT) >= ?1", nativeQuery = true)
List<ShapeEntity> getObjectsWithGreaterArea(double area);
@Query(value = "SELECT * FROM SHAPES WHERE COUNT_AREA(TYPE, RADIUS, WIDTH, HEIGHT) <= ?1", nativeQuery = true)
List<ShapeEntity> getObjectsWithLessArea(double area);
有可能嗎?當我嘗試它時,我得到:
SQL Error: 0, SQLState: 42601
SqlExceptionHelper : ERROR: syntax error at or near "$1"
uj5u.com熱心網友回復:
在您的情況下,您不能使用@Query.
撰寫getObjectsWithArea(String operator, double area)偽造查詢的實作
TypedQuery<ShapeEntity> q = entityManager.createQuery(String.format("SELECT * FROM SHAPES WHERE COUNT_AREA(TYPE, RADIUS, WIDTH, HEIGHT) %s :ca", operator), ShapeEntity.class);
q.setParameter("ca", theWantedValue)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/530331.html
