我有一个表CityComplete,其中列有"USPSCITY“、"STATE”和"ZIPCODE“
我有一个现有的SQLQuery,它基于模糊搜索清楚地选择USPSCITY和状态。但是,当我调用list()时,我得到了一个异常:
19. ResultSet.getString(ZIPCODE)
java.sql.SQLException: Column 'ZIPCODE' not found.
SQLQuery的实体被设置为CityComplete对象。
有没有办法让Hibernate不尝试获得邮政编码,或者以某种方式将其作为结果集的一部分?
除了使用条件、设置带有空数据的虚拟列或仅仅获得完整的结果集和处理代码端的区别之外,解决这个问题的最佳方法是什么?
发布于 2011-03-10 23:29:02
当执行常规Hibernate查询(HQL或条件)时,Hibernate将尝试根据映射中指定的实体的属性映射结果集。如果没有从数据库中获取“承诺”的数据,则需要使用ResultTransformer
自己处理映射。在这种情况下,您仍然可以使用您的CityComplete
,但是它们将没有ZIPCODE
。不幸的是,关于如何使用ResultTransformer
的文档不多,但是您可以查看Hibernate的JavaDoc,看看是否可以使用它。如果没有,则需要实现自己的:
http://docs.jboss.org/hibernate/core/3.6/javadocs/org/hibernate/transform/ResultTransformer.html
https://stackoverflow.com/questions/5264847
复制