gpt4 book ai didi

java - 如何使用 Jinq 搜索 Set

转载 作者:行者123 更新时间:2023-11-30 07:57:40 25 4
gpt4 key购买 nike

我有 Collection Set<Tag>在我的实体类中。 Tag类仅包含 Long idString值(value)。我想找到Place通过Tag但我收到错误 Could not analyze lambda code

    String name = places.getTag().getName();
if (name != null) {
stream = stream.where(p -> p.getTags().iterator().next().getName().equals(name));
}

有办法让它变得紧致又优雅吗?我知道我的代码不正确,并且我收到错误,因为 Jinq 可能不支持这样的东西 p.getTags().iterator().next().getName()

最佳答案

我不熟悉你的模式,但也许你可以用这样的方法进行连接来展平你的数据结构:

stream
.joinList( p -> p.getTags() )
.where( pair -> pair.getTwo().getName().equals(name) );

同样,这取决于您的数据库架构和实体,但如果您有正确的关系设置,那么您可以使用这样的方法变得更简单:

tagStream
.where( tag -> tag.getName().equals(name) ) // get the right tag
.selectAllList( tag -> tag.getPlaces() ) // get all places with that tag

如果您无法使用联接,则可以尝试使用子查询,但子查询在不同的 JPA 提供程序上表现得有点挑剔。对于子查询,只需确保子查询与普通查询的格式相同即可。

stream = stream
.where(p -> JinqStream.from(p.getTags())
.where( tag -> tag.getName().equals(name) )
.count() > 0);

关于java - 如何使用 Jinq 搜索 Set,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32440691/

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