Как вызвать процедуру оракула из данных весны или гибернации - PullRequest
0 голосов
/ 13 ноября 2018

Как вызвать предопределенную хранимую процедуру oracle, которая не связана с каким-либо конкретным классом сущностей.

Эта хранимая процедура ничего не возвращает. Можно ли это сделать из весенних данных jpa или hibernate. Если да, то как?

Ответы [ 2 ]

0 голосов
/ 14 ноября 2018

Одним из способов может быть использование JDBC connection, например, следующим образом

connection().prepareCall("{call storedProcedureName()}").execute()

Это также может быть сделано из hibernate sessionFactory connection

(sessionFactory.currentSession as SessionImpl).connection().prepareCall("{call storedProcedureName()}").execute()

подробного кода для spring-web-спящий

https://gist.github.com/lynas/20d61e9b4e74155276a141a7f156bfe6
0 голосов
/ 13 ноября 2018

hibernate-jpa предоставляет аннотацию @NamedStoredProcedureQuery, которую вы можете использовать:

@Table(name = "TableName")
@Entity
@NamedStoredProcedureQuery(
    name = "proc_name",
    procedureName = "proc_name",
    resultClasses = {ResultDTO.class},
    parameters = {
          @StoredProcedureParameter(mode = ParameterMode.IN, type = BigInteger.class, name = "param")
    }
)
public class ResultDTO { ... }

Вы должны аннотировать его как таблицу и сущность, поэтому я всегда просто помечаю его как таблицу, которую я использую в качестве корня моего процесса.

...