2016-09-26 14 views
1

私は解決できない問題があります。名前がわかっていても、パラメータは名前付きパラメータとして存在しません

Hibernateはこれを示す:

public int purgeOrSave(String hql, Date targetDate) { 
     Query query = getSession().createQuery(hql); 
     query.setDate("targetDate", targetDate); 
     return query.executeUpdate(); 
} 

HQLが実行するクエリを含む文字列である:「com.inetpsa.stb.model.Journalから削除

Parameter targetDate does not exist as a named parameter in [delete from com.inetpsa.stb.model.Journal t where t.date < :targetDate] 

targetDateこのように設定されていますt t.date <:targetDate "

エンティティは明確に定義されています。 ...

任意のアイデアを

delete from Journal t where t.date < :targetDate 

、結果はHibernateは雑誌がマッピングされていないことを私に伝えることです:私はこのように、エンティティの完全修飾名を抑制しようとしましたか?

PS:ここジャーナルのコードは次のとおりです。

<?xml version="1.0"?> 
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 
<hibernate-mapping package="com.inetpsa.stb.model" default-lazy="false"> 
    <class name="Journal" table="STBQTJEV"> 
     <id name="id" type="java.lang.Long" column="JEV_ID"> 
      <generator class="native"> 
      <param name="sequence">STBQXJEV</param> 
      </generator> 
     </id> 
     <property name="uuid"   column="JEV_UUID"   type="java.lang.String"/> 
     <property name="canal"   column="CAV_CODE"   type="java.lang.String"/> 
     <property name="commandeId"  column="CMD_CODE"   type="java.lang.String"/> 
     <property name="contratId"  column="CNT_CODE"   type="java.lang.String"/> 
     <property name="contratClient" column="CNT_CONTRAT_CLIENT" type="java.lang.String"/> 
     <property name="vin"   column="VCL_VIN"   type="java.lang.String"/> 
     <property name="clientCode"  column="CLT_CODE"   type="java.lang.String"/> 
     <property name="clientMaile" column="CLT_MAIL"   type="java.lang.String"/> 
     <property name="evenementCode" column="EVN_CODE"   type="java.lang.String"/> 
     <property name="offer"   column="JEV_OFFER"   type="java.lang.String"/> 
     <property name="produits"  column="JEV_PDT"   type="java.lang.String"/>   
     <property name="source"   column="JEV_SOURCE"   type="java.lang.String"/> 
     <property name="step"   column="JEV_STEP"   type="java.lang.String"/> 
     <property name="statut"   column="JEV_STATUT"   type="java.lang.String"/> 
     <property name="commentaire" column="JEV_COM"   type="java.lang.String"/> 
     <property name="detail"   column="JEV_DETAIL"   type="java.lang.String"/> 
     <property name="date"   column="JEV_DATE"   type="java.util.Date"/>  
     <property name="dateDebut"  column="JEV_DATE_DEBU"  type="java.sql.Timestamp"/> 
     <property name="dateFin"  column="JEV_DATE_FIN"  type="java.sql.Timestamp"/> 
    </class> 
</hibernate-mapping> 
+0

ジャーナルエンティティのコードを提供できますか? – null

+0

'setDate()'の代わりに 'setParameter()'で動作しますか? –

+0

初心者のためのクエリ文字列 – Antoniossss

答えて

0

私たちのチームエキスパートに電話したところ、解決策が見つかりました。私たちのアプリケーションは2つの異なるセッションを管理します。この問合せは、ジャーナルが休止状態のために「マップされていません」と説明された悪いものに対して呼び出されました。 DAOの発信者の修正後、バッチは正常に動作します。みなさんのおかげで助けになりました。

0

使用

query.setParameter( "targetDate"、targetDate)

代わりの

query.setDate( "targetDate"、tar getDate) `

+0

です。コメントの上位では、setParameter()は機能しません(setDateと同じエラー)。 –

関連する問題