0

我正在尝试将 Hibernate 与 SQL Server 一起使用。

我想从 SQL Server 中选择行并将它们转换为 Places 对象。

我将编写我尝试过的代码和我得到的异常。

List places = session.createQuery("FROM PLACES").list();
for (Iterator iterator = places.iterator(); iterator.hasNext();){
   Place place = (Place) iterator.next(); 
}

例外:

SEVERE: Incorrect syntax near the keyword 'from'.

此代码生成

select  from  

并且由于 SQL Server 需要 select 和 from 此查询之间的某些内容,因此该查询失败

所以我尝试将代码更改为

List places = session.createSQLQuery("SELECT ID,NAME FROM [PLACES].[dbo].[PLACES]").list();
   for (Iterator iterator = places.iterator(); iterator.hasNext();){
      Place place = (Place) iterator.next(); 
   }

例外:

Exception in thread "main" java.lang.ClassCastException

由于这个查询返回一个 Object[] 我不能转换它。

如何获取行并将它们转换为 Places 对象

映射

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
    <class name="com.places.general.Place" table="PLACES" schema="dbo">
        <id name="id" type="int">
            <column name="ID"/>
            <generator class="identity"/>
        </id>
        <property name="name" type="string">
            <column length="100" name="NAME" not-null="true"/>
        </property>
    </class>
</hibernate-mapping>
4

1 回答 1

2

在 HQL 语句中,您必须使用 Java 类名,而不是表名:

List places = session.createQuery("FROM Place").list();

或者

List places = session.createQuery("FROM com.places.general.Place").list();

第二次尝试返回一个 Object 数组列表,每个数组的第一个元素是 id,第二个是名称,它们必须分别转换为 Integer 和 String。

于 2012-10-02T12:55:04.703 回答