gpt4 book ai didi

java - 玩!框架: using find() model method on a collection

转载 作者:行者123 更新时间:2023-11-30 09:46:06 25 4
gpt4 key购买 nike

让我们假设一个具有这些字段的用户类:

@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 occured : Error while executing query SELECT u from User u where ? IN u.eventTopicIds: Syntax error in SQL statement "SELECT USER0_.ID AS ID3_, USER0_.EMAIL AS EMAIL3_, USER0_.FBID AS FBID3_, USER0_.FIRSTNAME AS FIRSTNAME3_, USER0_.GENDER AS GENDER3_, USER0_.GOOGLEACCESSTOKEN AS GOOGLEAC6_3_, USER0_.GOOGLEID AS 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 (.[*])) "; expected "NOT, EXISTS, SELECT, FROM"; SQL statement: select user0_.id as id3_, user0_.email as email3_, user0_.fbId as fbId3_, user0_.firstname as firstname3_, user0_.gender as gender3_, user0_.googleAccessToken as googleAc6_3_, user0_.googleId as 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 (.)) [42001-149]

最佳答案

通常你应该能够像这样运行一个 JPA 查询

User.find("Select u from User as u inner join u.stringList as strings where ? in strings", "HelloWorld").fetch();

做了一个小测试,我的对象有电子邮件而不是字符串,但应该是一样的,除非你遇到一些保留字。问题不在于 in 关键字,我必须在内部加入 stringList 才能使用 in 关键字。之前的标记有点快:)

希望这对您有所帮助。

关于java - 玩!框架: using find() model method on a collection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7307385/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com