आप अपने फ़ंक्शन को मूल क्वेरी के माध्यम से कॉल कर सकते हैं और दोहरे से परिणाम प्राप्त कर सकते हैं।
public interface HelloWorldRepository extends JpaRepository<HelloWorld, Long> {
@Query(nativeQuery = true, value = "SELECT PKG_TEST.HELLO_WORLD(:text) FROM dual")
String callHelloWorld(@Param("text") String text);
}
ध्यान दें कि यदि आपका फ़ंक्शन DML स्टेटमेंट का उपयोग कर रहा है तो यह काम नहीं करेगा। इस मामले में आपको @Modyfing
. का उपयोग करना होगा क्वेरी पर एनोटेशन, लेकिन फिर फ़ंक्शन को @Modyfing
. के कारण नंबर वापस करना होगा वापसी प्रकार प्रतिबंध।
आप अपना CustomRepository
. भी लागू कर सकते हैं और SimpleJdbcCall
. का उपयोग करें :
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
import org.springframework.jdbc.core.namedparam.SqlParameterSource;
import org.springframework.jdbc.core.simple.SimpleJdbcCall;
import org.springframework.stereotype.Repository;
@Repository
public class HelloWorldRepositoryImpl implements HelloWorldRepositoryCustom {
@Autowired
private JdbcTemplate jdbcTemplate;
@Override
public String callHelloWorld() {
SimpleJdbcCall jdbcCall = new SimpleJdbcCall(jdbcTemplate)
.withCatalogName("PKG_TEST") //package name
.withFunctionName("HELLO_WORLD");
SqlParameterSource paramMap = new MapSqlParameterSource()
.addValue("param", "value"));
//First parameter is function output parameter type.
return jdbcCall.executeFunction(String.class, paramMap));
}
}