Spring-Boot/JPA Error calling procedure with custom type objects as parameters
I am trying to call an stored procedure with JPA. When I call testWithNumber from serviceImpl, it works fine, but when I call testWithType, it throws the error:
javax.persistence.PersistenceException:
org.hibernate.exception.SQLGrammarException: Error calling
CallableStatement.getMoreResults
PLS-00306: wrong number or types of arguments in call to 'TESTWITHTYPE'
There is a way to call a stored procedure which has parameters of a custom TYPE?
Database procedures inside same package (PKG_TEST):
PROCEDURE testWithNumber (idName IN NUMBER, nameFound out VARCHAR2)
IS
BEGIN
SELECT NAME INTO nameFound FROM NAMES_TABLE WHERE ID_NAME=idName;
END test;
PROCEDURE testWithType (nameParam IN TEST_TYPE, nameFound out VARCHAR2)
IS
BEGIN
SELECT NAME INTO nameFound FROM NAMES_TABLE WHERE ID_NAME=nameParam.idName;
END test;
The TEST_TYPE in database is like this:
create or replace TYPE TEST_TYPE FORCE AS OBJECT
(
ID_NAME NUMBER(22)
,
NAME VARCHAR2(100)
);
Service implementation:
@Override
public void testWithType(NameDto nameObject)
StoredProcedureQuery query = em.createStoredProcedureQuery("PKG_TEST.testWithType")
.registerStoredProcedureParameter(1, NameDto.class, ParameterMode.IN)
.setParameter(1, nameObject)
.registerStoredProcedureParameter(2, String.class, ParameterMode.OUT);
query.execute();
LOG.info(query.getOutputParameterValue(2));
@Override
public void testWithNumber(NameDto nameObject)
StoredProcedureQuery query = em.createStoredProcedureQuery("PKG_TEST.testWithNumber")
.registerStoredProcedureParameter(1, Long.class, ParameterMode.IN)
.setParameter(1, nameObject.getIdName())
.registerStoredProcedureParameter(2, String.class, ParameterMode.OUT);
query.execute();
LOG.info(query.getOutputParameterValue(2));
The NameDto class:
import java.io.Serializable;
import java.util.Date;
public class NameDto
Long ID_NAME;
String NAME;
public NameDto(Long iD_NAME, String nAME)
super();
ID_NAME = iD_NAME;
NAME = nAME;
public Long getID_NAME()
return ID_NAME;
public void setID_NAME(Long iD_NAME)
ID_NAME = iD_NAME;
public String getNAME()
return NAME;
public void setNAME(String nAME)
NAME = nAME;
java spring spring-boot jpa-2.1
add a comment |
I am trying to call an stored procedure with JPA. When I call testWithNumber from serviceImpl, it works fine, but when I call testWithType, it throws the error:
javax.persistence.PersistenceException:
org.hibernate.exception.SQLGrammarException: Error calling
CallableStatement.getMoreResults
PLS-00306: wrong number or types of arguments in call to 'TESTWITHTYPE'
There is a way to call a stored procedure which has parameters of a custom TYPE?
Database procedures inside same package (PKG_TEST):
PROCEDURE testWithNumber (idName IN NUMBER, nameFound out VARCHAR2)
IS
BEGIN
SELECT NAME INTO nameFound FROM NAMES_TABLE WHERE ID_NAME=idName;
END test;
PROCEDURE testWithType (nameParam IN TEST_TYPE, nameFound out VARCHAR2)
IS
BEGIN
SELECT NAME INTO nameFound FROM NAMES_TABLE WHERE ID_NAME=nameParam.idName;
END test;
The TEST_TYPE in database is like this:
create or replace TYPE TEST_TYPE FORCE AS OBJECT
(
ID_NAME NUMBER(22)
,
NAME VARCHAR2(100)
);
Service implementation:
@Override
public void testWithType(NameDto nameObject)
StoredProcedureQuery query = em.createStoredProcedureQuery("PKG_TEST.testWithType")
.registerStoredProcedureParameter(1, NameDto.class, ParameterMode.IN)
.setParameter(1, nameObject)
.registerStoredProcedureParameter(2, String.class, ParameterMode.OUT);
query.execute();
LOG.info(query.getOutputParameterValue(2));
@Override
public void testWithNumber(NameDto nameObject)
StoredProcedureQuery query = em.createStoredProcedureQuery("PKG_TEST.testWithNumber")
.registerStoredProcedureParameter(1, Long.class, ParameterMode.IN)
.setParameter(1, nameObject.getIdName())
.registerStoredProcedureParameter(2, String.class, ParameterMode.OUT);
query.execute();
LOG.info(query.getOutputParameterValue(2));
The NameDto class:
import java.io.Serializable;
import java.util.Date;
public class NameDto
Long ID_NAME;
String NAME;
public NameDto(Long iD_NAME, String nAME)
super();
ID_NAME = iD_NAME;
NAME = nAME;
public Long getID_NAME()
return ID_NAME;
public void setID_NAME(Long iD_NAME)
ID_NAME = iD_NAME;
public String getNAME()
return NAME;
public void setNAME(String nAME)
NAME = nAME;
java spring spring-boot jpa-2.1
add a comment |
I am trying to call an stored procedure with JPA. When I call testWithNumber from serviceImpl, it works fine, but when I call testWithType, it throws the error:
javax.persistence.PersistenceException:
org.hibernate.exception.SQLGrammarException: Error calling
CallableStatement.getMoreResults
PLS-00306: wrong number or types of arguments in call to 'TESTWITHTYPE'
There is a way to call a stored procedure which has parameters of a custom TYPE?
Database procedures inside same package (PKG_TEST):
PROCEDURE testWithNumber (idName IN NUMBER, nameFound out VARCHAR2)
IS
BEGIN
SELECT NAME INTO nameFound FROM NAMES_TABLE WHERE ID_NAME=idName;
END test;
PROCEDURE testWithType (nameParam IN TEST_TYPE, nameFound out VARCHAR2)
IS
BEGIN
SELECT NAME INTO nameFound FROM NAMES_TABLE WHERE ID_NAME=nameParam.idName;
END test;
The TEST_TYPE in database is like this:
create or replace TYPE TEST_TYPE FORCE AS OBJECT
(
ID_NAME NUMBER(22)
,
NAME VARCHAR2(100)
);
Service implementation:
@Override
public void testWithType(NameDto nameObject)
StoredProcedureQuery query = em.createStoredProcedureQuery("PKG_TEST.testWithType")
.registerStoredProcedureParameter(1, NameDto.class, ParameterMode.IN)
.setParameter(1, nameObject)
.registerStoredProcedureParameter(2, String.class, ParameterMode.OUT);
query.execute();
LOG.info(query.getOutputParameterValue(2));
@Override
public void testWithNumber(NameDto nameObject)
StoredProcedureQuery query = em.createStoredProcedureQuery("PKG_TEST.testWithNumber")
.registerStoredProcedureParameter(1, Long.class, ParameterMode.IN)
.setParameter(1, nameObject.getIdName())
.registerStoredProcedureParameter(2, String.class, ParameterMode.OUT);
query.execute();
LOG.info(query.getOutputParameterValue(2));
The NameDto class:
import java.io.Serializable;
import java.util.Date;
public class NameDto
Long ID_NAME;
String NAME;
public NameDto(Long iD_NAME, String nAME)
super();
ID_NAME = iD_NAME;
NAME = nAME;
public Long getID_NAME()
return ID_NAME;
public void setID_NAME(Long iD_NAME)
ID_NAME = iD_NAME;
public String getNAME()
return NAME;
public void setNAME(String nAME)
NAME = nAME;
java spring spring-boot jpa-2.1
I am trying to call an stored procedure with JPA. When I call testWithNumber from serviceImpl, it works fine, but when I call testWithType, it throws the error:
javax.persistence.PersistenceException:
org.hibernate.exception.SQLGrammarException: Error calling
CallableStatement.getMoreResults
PLS-00306: wrong number or types of arguments in call to 'TESTWITHTYPE'
There is a way to call a stored procedure which has parameters of a custom TYPE?
Database procedures inside same package (PKG_TEST):
PROCEDURE testWithNumber (idName IN NUMBER, nameFound out VARCHAR2)
IS
BEGIN
SELECT NAME INTO nameFound FROM NAMES_TABLE WHERE ID_NAME=idName;
END test;
PROCEDURE testWithType (nameParam IN TEST_TYPE, nameFound out VARCHAR2)
IS
BEGIN
SELECT NAME INTO nameFound FROM NAMES_TABLE WHERE ID_NAME=nameParam.idName;
END test;
The TEST_TYPE in database is like this:
create or replace TYPE TEST_TYPE FORCE AS OBJECT
(
ID_NAME NUMBER(22)
,
NAME VARCHAR2(100)
);
Service implementation:
@Override
public void testWithType(NameDto nameObject)
StoredProcedureQuery query = em.createStoredProcedureQuery("PKG_TEST.testWithType")
.registerStoredProcedureParameter(1, NameDto.class, ParameterMode.IN)
.setParameter(1, nameObject)
.registerStoredProcedureParameter(2, String.class, ParameterMode.OUT);
query.execute();
LOG.info(query.getOutputParameterValue(2));
@Override
public void testWithNumber(NameDto nameObject)
StoredProcedureQuery query = em.createStoredProcedureQuery("PKG_TEST.testWithNumber")
.registerStoredProcedureParameter(1, Long.class, ParameterMode.IN)
.setParameter(1, nameObject.getIdName())
.registerStoredProcedureParameter(2, String.class, ParameterMode.OUT);
query.execute();
LOG.info(query.getOutputParameterValue(2));
The NameDto class:
import java.io.Serializable;
import java.util.Date;
public class NameDto
Long ID_NAME;
String NAME;
public NameDto(Long iD_NAME, String nAME)
super();
ID_NAME = iD_NAME;
NAME = nAME;
public Long getID_NAME()
return ID_NAME;
public void setID_NAME(Long iD_NAME)
ID_NAME = iD_NAME;
public String getNAME()
return NAME;
public void setNAME(String nAME)
NAME = nAME;
java spring spring-boot jpa-2.1
java spring spring-boot jpa-2.1
asked Nov 12 '18 at 20:58
Rubbia
62210
62210
add a comment |
add a comment |
0
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53269994%2fspring-boot-jpa-error-calling-procedure-with-custom-type-objects-as-parameters%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53269994%2fspring-boot-jpa-error-calling-procedure-with-custom-type-objects-as-parameters%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown