我有一個物體,它有幾個欄位:
我有一個物體,它有幾個欄位。
public class Some {
private Foo foo;
private Bar bar;
}
我希望有這樣的代碼,它能夠根據請求,按foo和bar進行排序。我知道有一些工具可以這樣使用:
Sort sort = Sort.by(Sort.Direction.DESC, "foo"/span>) 。
Pageable pageable = PageRequest.of(page, limit, sort)。
但是這種方法似乎并不完美,因為欄位名是硬編碼的,如果某些欄位名被改變,而開發人員忘記更新這個排序代碼,那么在編譯/啟動階段一切都會看起來很好,但是在運行時卻會失敗。
是否有可能有替代的解決方案,而不需要硬編碼和重復相同的方法,只是為了改變jpql查詢?
uj5u.com熱心網友回復:
如果你不想使用String來命名,你可以使用JPA元模型。這個元模型你也可以使用標準API來創建查詢。
這里是一篇不錯的博文,它解釋了如何生成和使用JPA標準元模型。簡而言之,就是在你的編譯器中添加一個Maven插件(如果你使用Gradle的話)。在編譯程序中,它將生成元模型。
使用你的樣本類
public class Some {
private Foo foo;
private Bar bar;
}
它將生成一個Some_類,然后你可以用它來獲取屬性的名稱。Some_.FOO將鏈接到foo屬性。現在,如果你將foo重命名為bar,編譯將失敗,因為Some_FOO不再可用。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/324177.html
標籤:
