【发布时间】:2011-09-05 11:27:16
【问题描述】:
让我们假设一个包含这些字段的 User 类:
@Entity
public class User extends Model {
public String email;
public String password;
@ElementCollection
public List<String> stringList;
}
我正在寻找一种方法来执行数据库请求,以查找在其 stringList 中具有给定字符串的所有用户,例如
List<User> usersHelloWorld = User.find("byStringList", "HelloWorld").fetch();
当然,这是行不通的。有什么办法让它工作吗?
编辑:
这是我的实际类字段:
@Entity
public class User extends Model {
public String email;
public String password;
public String firstname;
public String lastname;
public String gender;
public String fbId;
public String googleId;
@ElementCollection
public List<String> eventTopicIds;
@Transient
UserEventBuffer eventBuffer;
@Transient
public String fbAccessToken;
public String googleAccessToken;
}
有了这个要求:
List<User> u = User.find("SELECT u from User u where ? IN u.eventTopicIds", "internalns_rootTopic1").fetch();
我得到了那个错误:
JPAQueryException 发生: 执行查询 SELECT u 时出错 来自用户 u 哪里? IN u.eventTopicIds:SQL 语句中的语法错误 “选择 USER0_.ID 作为 ID3_、USER0_.EMAIL 作为 EMAIL3_、USER0_.FBID 作为 FBID3_,USER0_.FIRSTNAME 作为 FIRSTNAME3_,USER0_.GENDER 作为 GENDER3_, USER0_.GOOGLEACCESSTOKEN 为 GOOGLEAC6_3_,USER0_.GOOGLEID 为 GOOGLEID3_, USER0_.LASTNAME AS LASTNAME3_, USER0_.PASSWORD AS PASSWORD3_ FROM USER USER0_ CROSS JOIN USER_EVENTTOPICIDS EVENTTOPIC1_ WHERE USER0_.ID=EVENTTOPIC1_.USER_ID AND (? IN (.[*])) "; 预期 “不,存在,选择,从”; SQL语句:选择user0_.id为id3_, user0_.email 作为 email3_,user0_.fbId 作为 fbId3_,user0_.firstname 作为 firstname3_,user0_.gender 作为gender3_,user0_.googleAccessToken 作为 googleAc6_3_,user0_.googleId 为 googleId3_,user0_.lastname 为 lastname3_, user0_.password as password3_ from User user0_ cross join User_eventTopicIds eventtopic1_ where user0_.id=eventtopic1_.User_id 和 (? in (.)) [42001-149]
【问题讨论】:
标签: java collections model playframework find