【问题标题】:Ebean using And in QueryEbean 在查询中使用 And
【发布时间】:2015-07-18 12:30:08
【问题描述】:

我正在尝试进行查询,以检查帐户信息是否处于活动状态(布尔 = True)以及该用户的帐户信息(来自模型的用户 ID)。在 SQL 中我会这样写

Select * from mst_account where user=1 and active = 1

我想在游戏框架中使用 Ebean 来做到这一点。

如何使用 ebean 编写这样的查询。

用户帐户的模型如下

    @Table(name="mst_user_account")

public class UserAccount extends Model {
    @Id
    public Long id;

    public String email="";

    public String username="";

    public String password="";

    @Formats.DateTime(pattern = "yyyy-MM-dd hh:mm:ss")
    public Date createdOn=new Date();

    @Formats.DateTime(pattern="yyyy-MM-dd hh:mm:ss")
    public Date activatedOn;

    public String activationCode="";


    public Boolean activationStatus=false;

    public Boolean accountStatus=false;

    @ManyToOne
    public Roles role;



    public static Finder<Long,UserAccount> find=new Finder<Long,UserAccount>(Long.class,UserAccount.class);

    public static UserAccount findByEmail(String email){

        return UserAccount.find.where().eq("email",email).findUnique();
    }


    public static UserAccount findByUsername(String username){

        return UserAccount.find.where().eq("username",username).findUnique();

    }

    public static UserAccount findByActivationCode(String code){
        return UserAccount.find.where().eq("activationCode",code).findUnique();
    }


    public static UserAccount authenticate(String username,String password){
        return UserAccount.find.where().eq("username",username).eq("password",password).findUnique();
    }

//mod seroney to take care of display of username----
    public static UserAccount isLoggedIn() {
        String uuid = session("id");
        UserAccount user = UserAccount.find.byId(Long.parseLong(uuid));
        return user;


    }

帐户模型

@Entity
@Table(name="mst_account")
public class Account extends Model {
    @Id
    public Long id;

    public String firstName="";

    public String surname = "";

    public String otherName="";

    public String address="";

    public String city="";

    public String country="";

    public String mobile="";

    public String zipcode="";

    public String stateprv ="";

    public String usrtimezone ="";

    public Boolean physicalDisability =false;

    public String physicalDisabilityDesc ="";

    @OneToOne
    public ModeOfStudy modeOfStudy;

    @OneToOne
    public Campus campus;

    @OneToOne
    public CourseMst course;

    public String hschatt ="";

    public String hsgpa ="";

    public Qualifications hschyr;

    public String unvatt ="";

    public String ungpa ="";

    public Qualifications unvyr;

    public Boolean isprocessed = false;

    public Boolean isapproved = false;

    public Boolean isPosted = false;

    @Formats.DateTime(pattern = "yyyy-MM-dd hh:mm:ss")
    public Date createdOn=new Date();

    @OneToOne
    public UserAccount user;
    @OneToOne
    public UserAccount isapprovedby;


    public static Finder<Long,Account> find=new Finder<Long,Account>(Long.class,Account.class);

    public static Account findByMobile(String mob){

        return Account.find.where().eq("mobile",mob).findUnique();
    }

    public static Account findByAltPhone(String phone){

        return Account.find.where().eq("alternatePhone",phone).findUnique();
    }

    public static Account findByCardNumber(String card){

        return Account.find.where().eq("cardNumber",card).findUnique();

    }


    public static Account findByUserId(Long user){

        return find.where().eq("user", user).eq("isPosted", true).findUnique();
    }


}

我正在尝试检查用户是否已将数据发布到 mst 帐户

【问题讨论】:

    标签: java mysql playframework ebean


    【解决方案1】:

    在您的帐户模型中放置以下 sn-ps。我使用型号名称为Account 替换您自己的型号名称。

    public static Finder<Long,Account> find = new Finder(Long.class, Account.class);
    
    public static Account findByUserID(int user_id){
        return find.where().eq("user", user_id).eq("active", true).findUnique();
    }
    

    如果你引用UserAccount id,那么你需要将条件更改为.eq("user.id", user_id)

     public static Account findByUserId(Long user){
        return find.where().eq("user.id", user).eq("isPosted", true).findUnique();
    }
    

    【讨论】:

    • 我的用户 ID 是 Long。现在我收到一个错误[RuntimeException: get id on [models.UserAccount] type[java.lang.Long] throw error.] 在 /media/seroney/Stuff/Projects/Java/Play FrameWork/Codi/app/models /Account.java:104 101 } 102 public static Account findByUserId(Long userid){ 103 104 return find.where().eq("user", userid).eq("isPosted", true).findUnique(); 105}
    • @Seroney 你能发布你的模型吗?
    • 添加了模型,但它正在等待同行评审
    • 发布了模型,最初编辑了您的答案抱歉。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-23
    • 2014-05-15
    相关资源
    最近更新 更多