我只是担心,为什么在使用http://www.tutorialspoint.com/hibernate/hibernate_criteria_queries.htm
中的Hibernate标准时Criteria cr = session.createCriteria(Employee.class);
cr.add(Restrictions.eq("salary", 2000));
List results = cr.list();
如果在我的数据库中,Employee类没有工资列,或者更糟糕的是 - 未映射Employee,结果将是一个空列表,而hibernate不会抛出错误。
我认为这是隐式多态的问题,但首先我没有扩展任何东西,其次如果我将使用session.delete,session.save,session.update一切正常,我得到所有这些异常,如NoSuchFieldException, UnknownEntity等。
但是在使用条件获取对象时 - 只需清空列表。 它应该是它应该是什么?我可以以某种方式检查我在搜索的类/字段是否存在于DB中?
StackOverflow上有关它的所有问题都涉及到问题,当条件返回空列表时,它们在数据库中有对象。 我想知道为什么我的标准返回空列表,而它应该抛出错误......
我的hibernate配置文件: `
<?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="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.password">******</property>
<property name="hibernate.connection.url">*******</property>
<property name="hibernate.connection.username">******</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.hbm2ddl.auto">update</property>
<property name="hibernate.format_sql">true</property>
<property name="hibernate.search.autoregister_listeners">false</property>
<property name="hibernate.show_sql">true</property>
<property name="format_sql">true</property>
<property name="use_sql_comments">true</property>
<mapping resource="employee.hbm.xml" />
</session-factory>
</hibernate-configuration>
`