gpt4 book ai didi

java - Ebean finder 列表大小条件

转载 作者:行者123 更新时间:2023-12-01 13:21:32 26 4
gpt4 key购买 nike

我想创建一个仅查询具有空列表的行的查询。

我的模型中的列表:

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

@ManyToMany(cascade = CascadeType.ALL)
public List<Mandate> mandates;

执行查询的函数:

public static ExpressionList<BankDebit> findFilter(sepaId, mandat, day ....) {
ExpressionList<BankDebit> exp = find
.fetch("creditor")
.fetch("debitor")
.fetch("mandates")
.where()
.eq("sepa.id", sepaId);

if (day > 0) {
dateMax = dateMax.withDayOfMonth(day);
exp.eq("executionDate", dateMax.toDate());
}

if (!mandat.isEmpty())
exp.eq("mandates.id", 0); // here is the problem
return exp
}

我只想查询具有空授权列表的BankDebit。我尝试使用 .isNull("mandates"), .isNull("mandates.id"), .lt("mandates.id", 1).eq("mandates.id", null) 等等,但没有任何效果...

我不明白我应该怎么做。做一个rawSql会非常痛苦(我没有粘贴函数的整个代码)

我尝试了很多东西,并在谷歌上到达了许多第四页(这从来都不是一个好兆头)。我已经没有主意了。

最佳答案

嗯,你实际上更快了,我想向你建议类似的解决方案,可能更轻,因为不需要对象映射:

List<Integer> idsWithoutMandates = new ArrayList<>();
List<SqlRow> rowList = Ebean.createSqlQuery("SELECT debits.id id " +
"FROM bank_debit AS debits " +
"LEFT JOIN bank_debit_mandate AS jointable ON (debits.id = jointable.bank_debit_id) " +
"WHERE (jointable.mandate_id IS NULL OR jointable.mandate_id = 0)").findList();

for (SqlRow sqlRow : rowList) idsWithoutMandates.add(sqlRow.getInteger("id"));

List<BankDebit> debitsWithoutMandates = BankDebit.find.where().in("id", idsWithoutMandates).findList();

关于java - Ebean finder 列表大小条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21992463/

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