Java 如果列表是另一个列表的子集,则返回记录
我刚开始使用Ebean,需要一些帮助来编写查询。作为参考,我将Ebean 3.2与Postgres一起使用 现在我有一个“警报”模型,定义如下:Java 如果列表是另一个列表的子集,则返回记录,java,sql,postgresql,jpa,ebean,Java,Sql,Postgresql,Jpa,Ebean,我刚开始使用Ebean,需要一些帮助来编写查询。作为参考,我将Ebean 3.2与Postgres一起使用 现在我有一个“警报”模型,定义如下: @Entity public class Alert extends Model { @Id public long id; @ManyToMany(cascade = CascadeType.PERSIST) @JoinTable(name = "alert_account", joinColumns = @J
@Entity
public class Alert extends Model {
@Id
public long id;
@ManyToMany(cascade = CascadeType.PERSIST)
@JoinTable(name = "alert_account", joinColumns = @JoinColumn(name = "alert_id"), inverseJoinColumns = @JoinColumn(name = "account_id"))
private List<Account> accounts;
//...
}
@实体
公共类警报扩展模型{
@身份证
公共长id;
@ManyToMany(cascade=CascadeType.PERSIST)
@JoinTable(name=“alert\u account”,joinColumns=@JoinColumn(name=“alert\u id”),inverseJoinColumns=@JoinColumn(name=“account\u id”))
私人名单账户;
//...
}
警报和帐户之间存在多对多关系。警报可以包含一组帐户
我想编写一个查询,查找帐户仅为另一个帐户列表子集的所有警报
以以下为例: 警报1具有帐户[#a、#b、#c] 警报#2有帐户[#b,#c] 警报#3有帐户[#b] 警报#4有帐户[#a] 我的账户清单是:[b,#c] 我希望查询返回Alert#2和Alert#3,因为它们包含的帐户仅是帐户列表[#b,#c]的子集
我已经尝试过以下方法,但这会返回其帐户与子集列表中的任何帐户匹配的警报
List<Account> accountSubset = //...
return Alert.find.where().in("accounts", accountSubset).findList();
列出accountSubset=/。。。
返回Alert.find.where().in(“accounts”,accountSubset.findList();
为了澄清,上述查询具有以下行为:
以以下为例:
警报1具有帐户[#a、#b、#c]
警报#2有帐户[#b,#c]
警报#3有帐户[#b]
警报#4有帐户[#a]
我的账户清单是:[b,#c]
将获取警报1、警报2和警报3,因为它们包含与帐户列表中任何帐户匹配的帐户[#b、#c]
非常感谢您的帮助!我更愿意在数据访问层进行过滤,但我愿意接受其他建议。
>我正在使用Ebean 3.2
您知道Ebean的最新版本是12.1.3,对吗?Ebean 3.2是一个非常旧的版本。>我正在使用Ebean 3.2
您知道最新版本的Ebean是12.1.3,对吗?Ebean 3.2是一个非常旧的版本。