MS SQL Server 2012でHibernateでnamedQueriesを使用するPOCを試していて、Reminder.hbm.xml
構成で次のように設定しました。* .hbm.xmlファイルで宣言されたnamedQueryでSPを実行できません
<hibernate-mapping>
<class name="com.reminder.hibernate.model.Reminder" table="Reminders">
...
...
</class>
<sql-query name="fetchDOBsBasedOnDate">
<return alias="reminder" class="com.reminder.hibernate.model.Reminder"/>
<![CDATA[EXEC FetchDOBsBasedOnDate(:birthDate)]]>
</sql-query>
</hibernate-mapping>
と私はこのようなとしてのJavaクラスから上の名前付きクエリを呼び出すためにしようとしている:後
Query query = session.getNamedQuery("fetchDOBsBasedOnDate").setDate("birthDate", new Date(new java.util.Date().getTime()));
//Used java.sql.Date above
は私としてストアドプロシージャに置かれている単一のSQL文でありますクエリ自体を実行できませんでした。ここにストアドプロシージャのコードがあります。
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE FetchDOBsBasedOnDate
@InputDate DATETIME
AS
BEGIN
SET NOCOUNT ON;
SELECT * FROM Reminders WHERE DATEADD(year, DATEDIFF(year, BirthDate, @InputDate), BirthDate) = @InputDate
END
GO
問題は、SPが完全に動作するようにHibernateからこのSPを実行する際にエラーが発生しているということです。私は私のコンソール上に表示されるエラー:
Hibernate: EXEC FetchDOBsBasedOnDate(?)
1 Apr, 2016 3:48:14 PM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
WARN: SQL Error: 102, SQLState: S0001
1 Apr, 2016 3:48:14 PM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
ERROR: Incorrect syntax near '@P0'.
EDIT:paranthesisを退治した後 、SQL構文エラーが抑制されているが、私はまだ結果が届きません。
あなたの提案は、SQL構文エラーを抑制するのに役立ちましたが、私はまだHibernateを使ってストアドプロシージャを実行することができません...( –
あなたは、エラーメッセージを含むあなたの現在の問題それは働いていないなど –
私はスタンドアロンクライアント上で私のストアドプロシージャをテストして、それは完全に動作していますが、私がHibernateを介して呼び出しようとしているときに結果を出すものではありません! –