誰かが私に解決策を教えてくれるのであれば、Hibernateで何の問題も起こらなかった以下のクエリを実行しようとすると、 :問題HibernateからEclipseLink 2.0へのntiveクエリーのマイグレーション
エンティティ(Step.java):
@Entity
@Table(name = "IAS_STEP")
public class Step implements Serializable {
@Id
private Long id;
@Temporal(TemporalType.DATE)
private Date tarih;
private long formId;
private Byte faz;
// getters, setters, etc.
}
コントローラクラスのメソッド:
public byte getMaxPhase(String sid, long form_id) {
EntityManager em = getEntityManager();
try {
Query q = em
.createQuery(
"select max(faz) as mf from Step s where s.id = :sid and s.formId = :formId")
.setParameter("sid", sid)
.setParameter("formId", form_id);
return ((Byte) q.getSingleResult()).byteValue();
} finally {
em.close();
}
}
これは、Hibernateが、カリフォルニア州うまく働いEclipseLink 2.0でエラーを使用します。
誰でも回避策を提案できますか?
(あなたはJPQLないネイティブSQLクエリを実行している)されなければなりませんか? – dunni
ネイティブクエリはどこにありますか?エラーは何ですか?あなたは 'em.createNativeQuery(...)'ではなく 'em.createQuery(...)'を使っています。 –
Hibernateでは、ネイティブクエリとオブジェクト接頭辞がなくてもうまく動作しましたが、ベストプラクティスのためにネイティブクエリに変換しました。 'BigDecimal bd;質問q = em.createNativeQuery(「max(faz)をIAS_STEP aaからmfとして選択します。aa.id =?およびaa.form_id =?」).setParameter(1、id).setParameter(2、form_id); BigDecimal bd =(BigDecimal)q.getSingleResult(); if(bd!= null)sonuc =(Byte)bd.byteValueExact(); sonuc return; '問題はいずれかの方法で解決されます。 – Skyhan