Comment appeler une fonction Oracle à partir d'Hibernate avec un paramètre de retour?
Ma question est très bien comme L'obtention de la valeur de retour d'une fonction PL/SQL via Hibernate
J'ai une fonction qui ne quelques modifications à l'interne et elle renvoie une valeur.
L'origine, l'idée était de faire quelque chose comme ceci:
protected Integer checkXXX(Long id, Long transId)
throws Exception {
final String sql = "SELECT MYSCHEMA.MYFUNC(" + id + ", "
+ transId + ") FROM DUAL";
final BigDecimal nr = (BigDecimal) this.getHibernateTemplate()
.getSessionFactory().getCurrentSession().createSQLQuery(sql)
.uniqueResult();
return nr.intValue();
}
Malheureusement cela ne fonctionne pas avec Oracle. Quelle est la méthode recommandée pour faire quelque chose comme cela?
Est-il un moyen d'extraire les variables déclarées à partir de l'intérieur de ma déclaration?
source d'informationauteur Mauli
Vous devez vous connecter pour publier un commentaire.
Session Hibernate fournit une
doWork()
méthode qui vous donne un accès direct àjava.sql.Connexion
. Vous pouvez ensuite créer et utiliserjava.sql.CallableStatement
pour l'exécution de votre fonction:Oui, vous avez besoin d'un paramètre de sortie. Si vous utilisez le doWork() la méthode, vous feriez quelque chose comme ceci:
Code alternatif 🙂
si vous voulez conséquence directe vous pouvez utiliser le code ci-dessous
http://keyurj.blogspot.com.tr/2012/12/dowork-in-hibernate.html
J'ai écrit un article sur les différentes façons de les appeler des procédures stockées Oracle et les fonctions de mise en veille prolongée donc, pour résumer, vous avez les options suivantes:
Avec un
@NamedNativeQuery
:Avec l'API JDBC:
Avec un natif Oracle requête: