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