gpt4 book ai didi

java - Hibernate Restrictions.in() 只接受 propertyName 作为 String

转载 作者:行者123 更新时间:2023-12-01 23:36:25 25 4
gpt4 key购买 nike

我有一个 id 列表:

List<Object> ids;

我需要在条件查询中使用它来获取具有 ids 包含的 id 的所有行。

我现在拥有的和有效的:

    if (ids.size() > 0) {
for (Object id : ids) {
preparedResults.add((T)sessionMngr.getSession().
createCriteria(rowType).add(Restrictions.idEq(id))
.uniqueResult());
}
}

所以我一个接一个地获取它们,这不是最佳的,但我首先尝试了类似以下的操作来将它们放入一个查询中,但不知道在???:

            preparedResults.addAll(sessionMngr.getSession().
createCriteria(rowType).
add(Restrictions.in(???, ids)).list());

Restrictions.in() 的第一个参数是 String 类型。我无法在那里放置硬编码的“id”,因为我不知道属性名称是什么。所以我不知道如何在那里获取 id 属性作为字符串。我看到了 Projections.id(),但我不确定是否可以使用它来将其作为字符串获取。

最佳答案

有了这个solution您可以检索实体的 id 字段的名称。如果您使用注释,您可以将其变得更短,如here所述。 。如果您不使用复合主键,您也可以使用

ClassMetadata classMetadata = getSessionFactory().getClassMetadata(myClass);
字符串identifierPropertyName = classMetadata.getIdentifierPropertyName();

此片段的来源:here

关于java - Hibernate Restrictions.in() 只接受 propertyName 作为 String,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18610219/

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