我想用 Java 手動構建我的 sql 陳述句,然后向我的存盤庫提供一個最終字串,如下所示:
public interface EventRepository extends CrudRepository<Event, Long>{
@Query("?1")
List<Event> getLatestEventsFiltered(String sql);
}
這不起作用,因為它不符合語法......它說:QuerySyntaxException: unexpected token: ?
但是如何實作我的意圖呢?
提前致謝!
uj5u.com熱心網友回復:
你不能用@Query注釋來做到這一點。
首先,我們必須創建一個自定義介面來宣告我們的自定義方法:
public interface EventRepository extends CrudRepository<Event, Long> {
List<Event> getLatestEventsFiltered(String sql);
}
public interface EventRepositoryCustom {
List<Event> getLatestEventsFiltered(String sql);
}
接下來,我們將提供EventRepository介面的實作:
@Repository
public class EventRepositoryImpl implements EventRepositoryCustom {
@PersistenceContext
private EntityManager entityManager;
@Override
public List<Event> getLatestEventsFiltered(String sql) {
Query query = entityManager.createNativeQuery(sql, Event.class);
// You can use alternative query method instead of native query.
List<Event> resultList = (List<Event>) query.getResultList();
return resultList;
}
}
或者,另一種允許您做幾乎任何事情的可能性是使用SpecificationAPI。它允許您以編程方式創建而不是直接的 sql 陳述句。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/454155.html
