Java 如果我的表中有数据,为什么Hibernate条件返回空列表?

Java 如果我的表中有数据,为什么Hibernate条件返回空列表?,java,hibernate,criteria,Java,Hibernate,Criteria,我不明白为什么从标准中得到空列表,我的表中有数据 获取列表的代码: hibernateSession_destination = HibernateUtilReports.INSTANCE.getSession(); Criteria criteria = hibernateSession_destination.createCriteria(nr_rec_backup_rule.class); List list = criteria.list();

我不明白为什么从
标准中得到空列表,我的表中有数据

获取列表的代码:

hibernateSession_destination = HibernateUtilReports.INSTANCE.getSession();

        Criteria criteria = hibernateSession_destination.createCriteria(nr_rec_backup_rule.class);
        List list = criteria.list();
        System.out.println("List length =======  " + list.size()); // prints size = 0
My HibernateUtilReports.java:

public enum HibernateUtilReports {
    INSTANCE;
    public static SessionFactory sessionFactory = null;

private synchronized SessionFactory getSessionFactory(){

    if(sessionFactory == null){
        Configuration config = new Configuration();
        config.addAnnotatedClass(contaque_recording_log.class);
        config.addAnnotatedClass(contaque_servers.class);
        config.configure("reportshibernate.cfg.xml"); // is here any error???

        Properties configProperties = config.getProperties();
        ServiceRegistryBuilder serviceRegisteryBuilder = new ServiceRegistryBuilder();
        ServiceRegistry serviceRegistry = serviceRegisteryBuilder.applySettings(configProperties).buildServiceRegistry();
        sessionFactory = config.buildSessionFactory(serviceRegistry);
    }
    return sessionFactory;
}

public Session getSession(){
    return getSessionFactory().openSession();
}
}
My reportshibernate.cfg.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
        <property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property>
        <property name="connection.url">jdbc:oracle:thin:@8080/xe</property> 
        <property name="hibernate.connection.username">user</property>
        <property name="hibernate.connection.password">1234</property>

        <property name="c3p0.minPoolSize">2</property>
    <property name="c3p0.maxPoolSize">100</property>
    <property name="c3p0.timeout">1000</property>
    <property name="hibernate.cache.use_second_level_cache">false</property>
    <property name="show_sql">true</property>
    <property name="hibernate.connection.zeroDateTimeBehavior">convertToNull</property>

</session-factory>

oracle.jdbc.driver.OracleDriver
org.hibernate.dialen.oracle10galent
jdbc:oracle:thin:@8080/xe
用户
1234
2.
100
1000
假的
真的
敞篷车

我哪里做错了

编辑:

注意:由于在我的xml中“show_sql”设置为“true”,但我在控制台上没有得到任何sql查询


在使用CriteriaAPI时,我们需要提供表达式或别名,它基本上设置了应该在调用方法/类中实现的条件

考虑一下,我想为OrderBean设置一个条件,它的输入属性是orderId、orderName、orderType,我将在此基础上设置条件或获取数据。我的方法如下:

hibernateSession_destination = HibernateUtilReports.INSTANCE.getSession();
Criteria criteria = hibernateSession_destination.createCriteria(Order.class);
criteria.add(Expression.eq("orderId", orderId)); //1
criteria.add(Expression.like("orderType", siteType)); //2
criteria.add(Expression.in("orderId", siteId)); //3
List list = criteria.list();
System.out.println("List length =======  " + list.size());
注:我没有必要包括上面标记的所有1,2,3。但是为了设置订单标准。如果由于任何限制而无法获取整个架构,则可以将此用作解决方法


但是,您可能还需要检查数据库连接。这可能是一个不允许您的应用程序获取数据的问题。

对于那些像我一样仍在寻找这个问题答案的人,请检查您的hibernate配置xml,并确保您的hibernate实体在那里声明

检查连接URL
jdbc:oracle:thin:@localhost:1521:xe
。另外,检查日志这将帮助您实际上我在这里有另一个URL
jdbc:oracle:thin:@URL:xe
,我在这里写了
8080
,只是为了我的服务器的安全…@aniket没有得到任何异常或错误…..只有O/P是
列表长度===0
旧问题,但是。。。还有其他可能的原因吗?事实上,我已经将该类包含到配置文件中,但仍然得到一个空列表。哈哈,我们有时会忘记最重要的声明,这真的很有趣。我创建了所有映射等,但忘记在配置文件中插入实体。非常感谢。但它不应该抛出实体NotFound异常吗