2017-07-14 2 views
0

Wenn ich mvn test starte, sind alle Tests korrekt. Ich weiß, dass die Überprüfung Integrationstests gestartet hat.Exception maven - Verify

Aber wenn ich Tests in meiner IDE ausführen, bekomme ich diese Ausnahme. Welchen Grund?

Meine Ausnahme Stapel-

javax.persistence.PersistenceException: org.hibernate.exception.GenericJDBCException: could not extract ResultSet 
    at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert (AbstractEntityManagerImpl.java:1692) 
    at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert (AbstractEntityManagerImpl.java:1602) 
    at org.hibernate.jpa.internal.QueryImpl.getSingleResult (QueryImpl.java:560) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at org.springframework.orm.jpa.SharedEntityManagerCreator$DeferredQueryInvocationHandler.invoke(SharedEntityManagerCreator.java:372) 
    at com.sun.proxy.$Proxy99.getSingleResult(Unknown Source) 
    at com.datas_tech.ingo.core.repository.jpa.implementation.AisRepositoryImpl.getAisId(AisRepositoryImpl.java:34) 
    at com.datas_tech.ingo.core.repository.jpa.AisRepositoryITest.testGetAisId(AisRepositoryITest.java:37) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50) 
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) 
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47) 
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) 
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26) 
    at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:75) 
    at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:86) 
    at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:84) 
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325) 
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:252) 

Der durch Stapel verursacht:

Caused by: org.hibernate.exception.GenericJDBCException: could not extract ResultSet 
    at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:47) 
    at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:109) 
    at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:95) 
    at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:79) 
    at org.hibernate.loader.Loader.getResultSet(Loader.java:2117) 
    at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1900) 
    at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1876) 
    at org.hibernate.loader.Loader.doQuery(Loader.java:919) 
    at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:336) 
    at org.hibernate.loader.Loader.doList(Loader.java:2617) 
    at org.hibernate.loader.Loader.doList(Loader.java:2600) 
    at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2429) 
    at org.hibernate.loader.Loader.list(Loader.java:2424) 
    at org.hibernate.loader.custom.CustomLoader.list(CustomLoader.java:336) 
    at org.hibernate.internal.SessionImpl.listCustomQuery(SessionImpl.java:1967) 
    at org.hibernate.internal.AbstractSessionImpl.list(AbstractSessionImpl.java:322) 
    at org.hibernate.internal.SQLQueryImpl.list(SQLQueryImpl.java:125) 
    at org.hibernate.jpa.internal.QueryImpl.list(QueryImpl.java:606) 
    at org.hibernate.jpa.internal.QueryImpl.getSingleResult(QueryImpl.java:529) 
    ... 39 more 
Caused by: java.sql.SQLException: ORA-20001: �� ��������� �������� � ����� �������! 
ORA-06512: at "INSURADM.PACK_PORTAL_PROC", line 574 

Code:

@Override 
public Long getAisId(String aisAgeementNumber, String phoneNumber, Integer portalId) { 
    String query = "SELECT insuradm.PACK_PORTAL_PROC.FindFromTel(:p_ag_num, :p_tel, :p_portal_sub_id) FROM DUAL"; 
    try { 
     Long aisId = (Long) entityManager 
       .createNativeQuery(query) 
       .setParameter("p_ag_num", aisAgeementNumber) 
       .setParameter("p_tel", phoneNumber) 
       .setParameter("p_portal_sub_id", portalId) 
       .getSingleResult(); 
     return aisId; 
    } catch (Exception e) { 
     e.printStackTrace(); 
     return null; // TODO определиться что лучше, Exception или null 
    } 
} 

Antwort

0

Gleich am unteren Ende des Stapels ist dies:

java.sql.SQLException: ORA-20001: ! ORA-06512: bei "INSURADM.PACK_PORTAL_PROC", line 574

So Ihr Paket INSURADM.PACK_PORTAL_PROC schleudert eine benutzerdefinierte Ausnahme (ORA-20001 im Bereich Oracle beiseite für unsere eigenen Fehler gesetzt hat). Vielleicht kannst du die Fehlermeldung lesen? Sieht so aus, als wäre es in Unicode geschrieben, also können wir es nicht sehen.

In beiden Fällen müssen Sie in INSURADM.PACK_PORTAL_PROC bohren, um zu verstehen, warum es Fehler gibt. Der Stack sagt Ihnen sogar, wo Sie anfangen sollen - Zeile 574 - obwohl das eher ein Ausnahme-Handler sein könnte als die Zeile, die das Problem verursacht. Wie einfach es ist, das Problem zu diagnostizieren, hängt von der Qualität des PL/SQL-Codes ab, insbesondere davon, wie gut es instrumentiert ist und wie umfassend die Protokollierung ist.

Die wahrscheinlichste Erklärung ist, dass Ihre Maven-Instanz auf eine andere Datenbank verweist als bei lokalen Tests. Sie könnten also Variationen in den Testdaten haben, die eine Ausnahme verursachen könnten. Sie müssen den genauen Code finden, der die Ausnahme auslöst und die Umstände verstehen, die ihn auslösen.

Da es sich um eine benutzerdefinierte Ausnahme handelt, müssen Sie die pragma exception_init Deklaration finden, die -20001 mit einer benannten Ausnahmevariable verknüpft, als die RAISE für diese Ausnahme finden; Mit etwas Glück wird es nur einen Ort geben, oder zumindest einen offensichtlichen Ort.

+0

Vielen Dank –

+0

Ich denke, Problem, dass DB-Nachricht Ausnahme, dass nicht diese Daten in der DB –