2015-09-29 36 views
7

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

+0

Skończyłeś? – Opal

+0

Ktoś wie, jak rozwiązać ten problem w tym wydaniu? –

+0

Mam ten sam problem z adnotacją "@ Procedure". – alltej

Odpowiedz

0

nigdy nie znalazłem rozwiązanie tak samo inne podejście

@Repository 
public interface MyObjectRepository extends CrudRepository<MyObject, String> { 
    @Query(value = "EXECUTE [dbo].[myProc] :fieldName, :pages", nativeQuery = true) 
    Set<MyObject> findAllByFieldName(@Param("fieldName") String fieldName, @Param("pages") int pages); 
} 

to jest podobne, a ja zaproponowałem tę samą odpowiedź question

Ten link może być pomocny DATA REPOSITORIES IN SPRING DATA JPA

Powiązane problemy