# Spring Data JPA ###### tags: `jpa` `spring` ## Data Access Object<SUB>(資料存取物件/数据访问对象)</SUB> ### 以 method 名稱建立查詢<SUB>([出處](https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpa.query-methods.query-creation "Query creation from method names"))</SUB> | | JPQL | | --------------------------- | -------------------------------------- | | `find`**`Distinct`**`ByColumn` | `SELECT DISTINCT ... WHERE e.column = ?1` | | `findByColumn1`**`And`**`Column2` | `WHERE e.column1 = ?1 AND e.column2 = ?1` | | `findByColumn`**`IgnoreCase`** | `WHERE UPPER(e.column) = UPPER(?1)` | ### 使用 JPA Named Queries ```java @Entity @NamedQuery(name = "Something.findByColumn", query = "SELECT s FROM Something s where u.emailAddress = ?1") public class User { } ``` ### Specifications ```java public class CustomerSpecs { public static Specification<Customer> isLongTermCustomer() { return new Specification<Customer>() { public Predicate toPredicate(Root<Customer> root, CriteriaQuery<?> query, CriteriaBuilder builder) { LocalDate date = new LocalDate().minusYears(2); return builder.lessThan(root.get(_Customer.createdAt), date); } }; } public static Specification<Customer> hasSalesOfMoreThan(MonetaryAmount value) { return new Specification<Customer>() { public Predicate toPredicate(Root<T> root, CriteriaQuery<?> query, CriteriaBuilder builder) { // build query here } }; } } ```
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up