0

SQLServerでHibernateを使用しようとしています。

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();

そして、2回目の試行では、オブジェクトの配列のリストが返されます。各配列の最初の要素はid、2番目はnameであり、整数と文字列に別々にキャストする必要があります。

于 2012-10-02T12:55:04.703 に答える