gpt4 book ai didi

属性不在的 hibernate 条件(子查询)

转载 作者:行者123 更新时间:2023-12-03 18:26:45 25 4
gpt4 key购买 nike

我想执行类似的查询

Select id, name from information where name not in (select firstname from contact where id  = 1)

Information
Id Name
1 Test

Contact
id firstname
1 name
2 Test

如果我使用 neProperty() 函数,它将返回记录为 name != Test.
如何使用 hibernate 标准来实现?

谢谢

最佳答案

您可以使用 DetachedCriteria 来构建子查询。

// This corresponds to (select firstname from contact where id  = 1)
DetachedCriteria subquery = DetachedCriteria.forClass(Contact.class)
.add(Restrictions.eq("id", 1))
.setProjection(Projections.property("name"))

// This corresponds to (select information where name not in (subquery))
ICriteria criteria = session
.createCriteria(Information.class)
.add(Subqueries.notIn("name", subquery));

您可以使用 session.get 加载联系人,而不是使用子查询,并有机会访问缓存:
Contact contact = session.Get<Contact>(1);

ICriteria criteria = session
.createCriteria(Information.class)
.add(Property.ne("name", contact.getName()));

免责声明:我 a) 不是 Java 程序员,并且 b) 可能犯了错误,所以它可能无法编译。代码更粗略地展示了这个想法,无论如何都希望有所帮助。

关于属性不在的 hibernate 条件(子查询),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12635404/

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