Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 是否有任何方法可以恢复符合多个标准(不一定是ID)的对象?_Java_Hibernate - Fatal编程技术网

Java 是否有任何方法可以恢复符合多个标准(不一定是ID)的对象?

Java 是否有任何方法可以恢复符合多个标准(不一定是ID)的对象?,java,hibernate,Java,Hibernate,我正在从事一个使用hibernate的项目。 我们有一个数据库,现在我想查询它 在理想情况下,我知道我能够通过ID或使用Hibernate的查询语言来恢复对象。但是,如果有一种方法,我可以向其中发送一个对象,该对象具有我想要用作过滤器的属性,并返回该表中与这些标准匹配的所有对象,这对我来说将是最佳选择。 比如说 Person p = new Person(); p.setName("Junior"); p.setAge(10); session.Load(Person.class, p); //

我正在从事一个使用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向我指出了标准,这与我所需要的非常相似。 问题是:我想要一个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;
}
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;
}  
公共列表加载(T过滤器,类类型)
{
会话会话=HibernateUtil.getSessionFactory().getCurrentSession();
列出搜索结果;
session.beginTransaction();
searchResult=((List)session.get(type,filters));//假设该方法
//我问的问题是否存在
返回搜索结果;
}
这样,我就可以向这个方法发送几乎任何对象,该方法将查询数据库并返回符合条件的对象列表

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

谢谢, 奥斯卡

我想冬眠可以帮助你

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

现在,创建如下方法:

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;
}
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;
}  
公共列表加载(列表参数,类类型)
{
会话会话=HibernateUtil.getSessionFactory().getCurrentSession();
列出搜索结果;
session.beginTransaction();
Criteria Criteria=createCriteriaFromParams(参数);
searchResult=criteria.list();
返回搜索结果;
}  

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

这正是我想要的。我想到了一个问题,我将更新当前的问题,以使其保持最新。谢谢:)我想这对我有帮助。非常感谢!:)最后,我找到了本教程,该教程教您如何使用业务对象创建Criteria对象,而不使用params参数:)