slim3のJDOクエリをお試し中
slim3のJDOサポートで前方検索は以下でできた。簡単。
KindDao 追記:コメントいただいたのでKindDao修正
public List<Kind> findByString(String serchStr) {
SelectQuery<Kind> sq = new SelectQuery<Kind>(pm, modelClass);
return sq.where(kindMeta.name.startsWith(serchStr)).getResultList();
return from().where(kindMeta.name.startsWith(serchStr)).getResultList();
}
EntityとDaoとMetaはslim3genで自動的に生成されて、MetaはEntityのフィールド名と同じpublic fieldをorg.slim3.jdo.AttributeMeta型として持つ。
KindMeta
package kijitoraneko.demo.server.meta; @javax.annotation.Generated(value = { "slim3-gen", "EA1-SNAPSHOT" }, date = "2009-09-01 13:10:00") public final class KindMeta extends org.slim3.jdo.ModelMeta<kijitoraneko.demo.shared.model.Kind> { public KindMeta() { super(kijitoraneko.demo.shared.model.Kind.class); } public KindMeta(String attributeName) { super(kijitoraneko.demo.shared.model.Kind.class, attributeName); } public org.slim3.jdo.AttributeMeta key = new org.slim3.jdo.AttributeMeta(this, "key", java.lang.String.class); public org.slim3.jdo.AttributeMeta name = new org.slim3.jdo.AttributeMeta(this, "name", java.lang.String.class); public org.slim3.jdo.AttributeMeta version = new org.slim3.jdo.AttributeMeta(this, "version", java.lang.Long.class); }
このAttributeMetaにいろいろなCriterionを生成するメソッドがあるので、それを使って、SelectQuery#where()の引数に渡せば条件検索できるようだ。
文字列でquery書かんでいい。いい!