gpt4 book ai didi

java - 有没有办法恢复符合多个条件(不一定是ID)的对象?

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

我正在开发一个使用 hibernate 的项目。我们有一个数据库,现在我想查询它。

在理想情况下,我知道我能够通过对象的 ID 或使用 Hibernate 的查询语言来恢复对象。但是,如果有一种方法可以将具有我想要用作过滤器的属性的对象发送到该方法,并返回该表中与这些条件匹配的所有对象,那对我来说是最佳的。例如

Person p = new Person();
p.setName("Junior");
p.setAge(10);
session.Load(Person.class, p); //this would return all "junior" with age = 10

我想 Hibernate 会提供类似的功能。可以?我应该使用哪种方法?

谢谢,奥斯卡

编辑:@nIKUNJ 向我指示了 Criteria,这与我需要的非常相似。问题是:我想要一个 DatabaseManager 类,它可以处理保存、加载等功能。例如,我的负载如下所示:

public <T extends Serializable> List<T> load(T filters, Class<T> type)
{
Session session = HibernateUtil.getSessionFactory().getCurrentSession();

List<T> searchResult;
session.beginTransaction();

searchResult = ((List<T>)session.get(type, filters)); //assuming the method
//I asked for in the question exists


return searchResult;
}

这样,我就可以将几乎任何对象发送到此方法,并且该方法将查询数据库并返回符合条件的对象列表。

你知道我如何使用 Criteria 类来模仿这种行为吗?

谢谢,奥斯卡

最佳答案

我认为 Hibernate Criteria可以帮你。

您可以使用一个具有三个属性的参数类:名称、类型和值Name 将是列的名称,type 将是等于、小于、大于等条件类型,value 将是值那个条件。
例如,name="person.age",type = 大于等于,value=18。创建一个实用方法,将这些参数转换为条件对象。

现在,创建一个像这样的方法:

public <T extends Serializable> List<T> load(List<Parameter> params, Class<T> type)
{
Session session = HibernateUtil.getSessionFactory().getCurrentSession();

List<T> searchResult;
session.beginTransaction();
Criteria criteria = createCriteriaFromParams(params);
searchResult = criteria.list();

return searchResult;
}

这是一个非常简单的场景。您可以通过在参数列表中添加一些额外的属性来创建一些复杂的条件。

关于java - 有没有办法恢复符合多个条件(不一定是ID)的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6449299/

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