Spring Data JPA - 如何創建查詢(4)Named Query

作者簡介

陳喆,現就職於中科院某研究所擔任副研究員,專注於工業雲平臺、MES系統的設計與研發。

內容來源:https://docs.spring.io/spring-data/jpa/docs/2.0.9.RELEASE/reference/html/#jpa.query-methods.named-queries

本例使用<named-query/>元素和@NamedQuery註解,對應的查詢需要使用JPA查詢語言定義。也可以使用<named-native-query/>或@NamedNativeQuery。這樣可以使用原生SQL,但這樣會喪失數據庫平臺獨立性。

XML定義命名查詢

使用XML配置,向位於META-INF文件夾下的orm.xml配置文件添加必要的<name-query/>元素。

<named-query name="User.findByLastname">
  <query>select u from User u where u.lastname = ?1</query>
</named-query>

基於註解定義命名查詢

基於註解的配置可以免於編輯額外的配置文件,降低維護成本。但需要你在每次聲明新查詢的時候重新編譯實體類。

@Entity
@NamedQuery(name = "User.findByEmailAddress",
  query = "select u from User u where u.emailAddress = ?1")
public class User {

}

聲明接口

要使用上面定義的命名查詢,需要定義到UserRepository接口中:

public interface UserRepository extends JpaRepository<User, Long> {

  List<User> findByLastname(String lastname);

  User findByEmailAddress(String emailAddress);
}

Spring Data嘗試處理這些方法對命名查詢的調用,以實體類名稱開始,後接方法名,以點作連接符。所以NameQuery定義在實體上,而不是定義在方法上。

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章