Próbuję wywołać procedurę składowaną Oracle i poniżej są moje Entity i repozytorium klasWiosna danych JPA procedury przechowywanej
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.NamedStoredProcedureQuery;
import javax.persistence.ParameterMode;
import javax.persistence.StoredProcedureParameter;
@NamedStoredProcedureQuery(name = "casedetails", procedureName = "APPS.GET_SR_DATA", resultClasses = Case.class, parameters = {
@StoredProcedureParameter(name = "p_sr_number", mode = ParameterMode.IN, type = String.class),
@StoredProcedureParameter(name = "p_results", mode = ParameterMode.REF_CURSOR, type = void.class),
@StoredProcedureParameter(name = "p_retVal", mode = ParameterMode.OUT, type = Long.class),
@StoredProcedureParameter(name = "p_errMsg", mode = ParameterMode.OUT, type = String.class) })
/* }) */
@Entity
public class Case implements Serializable {
@Id
@Column(name = "sr_number")
private String caseNumber;
@Column(name = "problem_summary")
private String caseTitle;
@Column(name = "sr_type")
private String caseCategory;
}
moim repozytorium klasa,
import org.springframework.data.repository.query.Param;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.query.Procedure;
public interface CaseRepository extends JpaRepository<Case,String>{
@Procedure(name = "casedetails", procedureName = "APPS.GET_SR_DATA")
List<Case> findByCaseNumber(@Param("caseNumber") String caseNumber);
}
Poniżej persistence.xml
<?xml version="1.0"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence persistence_1_0.xsd" version="1.0">
<persistence-unit name="case-rest-service" transaction-type="RESOURCE_LOCAL">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
</persistence-unit>
</persistence>
Projekt pom.xml wpisy
<dependency>
<groupId>org.springframework.hateoas</groupId>
<artifactId>spring-hateoas</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-commons</artifactId>
</dependency>
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>eclipselink</artifactId>
<version>2.6.0-M3</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
</dependency>
Kiedy próbuję uruchomić repozytorium testów widzę poniżej błędu
Object of class [org.springframework.data.jpa.repository.query.PartTreeJpaQuery] must be an instance of class org.springframework.data.jpa.repository.query.StoredProcedureJpaQuery; nested exception is java.lang.IllegalArgumentException: Object of class [org.springframework.data.jpa.repository.query.PartTreeJpaQuery] must be an instance of class org.springframework.data.jpa.repository.query.StoredProcedureJpaQuery
nigdy używane Wiosna danych WZP z procedury składowanej przed ale doceniam tutaj żadnego sprzężenia zwrotnego/wejście
Skończyłeś? – Opal
Ktoś wie, jak rozwiązać ten problem w tym wydaniu? –
Mam ten sam problem z adnotacją "@ Procedure". – alltej