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書かんでいい。いい!