@NamedQueries({ @NamedQuery(name = "EntityA.test", query = "from TABLE o where o.FIELD = :variable") // ....可多個 @NamedQuery }) public class EntityA extends DomainEntity{ // query 語句中需要代入的變數,用冒號做前置符號 public static final String ATTRIBUTE_VARIABLE = "variable"; // NamedQuery 的名稱 public static final String NAMED_QUERY_TEST = "Entity.test"; }
然後便可在 service 中使用此 NamedQuery
// find: 取回的結果有多筆時使用 public ListfindEntityA (String variable) { return find(EntityA.NAMED_QUERY_TEST, EntityA.ATTRIBUTE_VARIABLE, "vaiableValue"); } // getSingleResult: 只會取回一筆結果時 public EntityA findEntityA (String variable) { return getSingleResult(EntityA.NAMED_QUERY_TEST, EntityA.ATTRIBUTE_VARIABLE, "vaiableValue"); }
若 SQL 中有多個變數時,可用 Map,ex:
Mapparameters = new HashMap (); parameters.put(ATTRIBUTE1, VALUE1); parameters.put(ATTRIBUTE2, VALUE2); find(EntityA.NAMED_QUERY_TEST, parameters);
* Reference
- find
沒有留言:
張貼留言