ルーズリーフ

公私におよぶ経験値獲得履歴的ななにか。

ebean.Model.FinderでORを使う

Ebeanというか、Finderを使ってさっくり目的のデータを取得したい場合のメモ。

 

Play Framework 2.2.1 (Java)

MySQL 5.6.x

 

適当なebean.Model(仮にUser.java)があったとして、

・User.java

 

package models;
import java.util.Date;
 
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Version;
 
import play.data.validation.Constraints;
import play.db.ebean.Model;
 
import com.avaje.ebean.annotation.CreatedTimestamp;
 
@Entity
@Table(name="User")
public class User extends Model {
 
    @Id
    public String userId;
    @Constraints.Required
    public String userName;
    public String userAddress;
    @CreatedTimestamp
    public Date created;
    @Version
    public Date updated;
 
/* getter setter 省略 */
 
    public static Finder<String,User> find = new Finder<String,User>(
        String.class, User.class
    );
}

 

Userを対象として簡単に目的のデータを取得する場合、こんな感じ。

 

// import もろもろは省略、追加で必要なものだけ
import com.avaje.ebean.Expr;
import models.User;
 
/* アドレスにsampleを含む、
* もしくはアドレスがないユーザを取得する的な
*/
    public static List<User> get() {
        List<User> userList =
            User.find
                  .where()
                  .or(Expr.like("userAddress", "%sample%"), Expr.isNull("userAddress"))
                  .findList();
        return userList;
    }

 

どうもうまくググれず無駄に時間がかかってしまったので。

お仕事中に書いたコードを抜粋して改変しているので、タイポがあったらごめんなさい。