2017-09-28 11 views
0

Methode behandeln einfügen Datenwie DuplicateKeyException im Frühjahr Daten mongodb

public String home() { 

    try 
    { 
    MongoData data=new MongoData(); 
    data.setDate(new Date()); 
    data.setName("frji"); 

    //mongoTemplate.insert(data); 
    mongoTemplate.save(data); 
    } 
    catch (DuplicateKeyException e) { 

    } 
    catch (MongoException e) { 

    } 
    return "home"; 
} 

Entity Klasse

@Document(collection="integer_test") 
public class MongoData { 
    @Id 
    private String id; 
    private Date date; 
    @Indexed(unique=true) 
    private String name; 
    @Override 
    public String toString() { 
     return "MongoData [date=" + date + ", id=" + id + "]"; 
    } 
    public Date getDate() { 
     return date; 
    } 
    public void setDate(Date date) { 
     this.date = date; 
    } 
    public String getId() { 
     return id; 
    } 
    public void setId(String id) { 
     this.id = id; 
    } 
    public String getName() { 
     return name; 
    } 
    public void setName(String name) { 
     this.name = name; 
    } 

} 

Aber es ist nicht die Ausnahme abfangen. Es wird auf der Benutzeroberfläche angezeigt. Wie kann ich diese Ausnahme in Java-Ende fangen.

com.mongodb.MongoException $ DuplicateKey: { "serverUsed": "192.168.1.113:27017", "ok": 1, "n": 0, "err": „E11000 duplizieren Schlüssel Fehlerindex: jmailer_digigengage.integer_test. $ name dupschlüssel: {: \ "frji \"} "," code ": 11000} um com.mongodb.CommandResult.getWriteException (CommandResult.java:88) um ​​ com.mongodb .CommandResult.getException (CommandResult.java:79) bei com.mongodb.DBCollectionImpl.translateBulkWriteException (DBCollectionImpl.java:415) bei com.mongodb.DBCollectionImpl.insertImpl (DBCollectionImpl.java:210) bei com.mongodb. DBCollection.insert (DBCollection.java:176) um com.mongodb.DBCollection.insert (DBCollection.java:161) um com.mongodb.DBCollection.insert (DBCollection.java:107) um com.mongodb.DBCollection. speichern (DBCollection.java:1214) bei com.mongodb.DBCollection.save (DBCollection.java:1179) bei org.springframework.data.mongodb.core.MongoTemplate $ 11.doInCollection (MongoTemplate.java:1106) bei org.springframework.data.mongodb.core.MongoTemplate.execute (MongoTemplate.java:479) bei org.springframework.data.mongodb.core.MongoTemplate.saveDBObject (MongoTemplate.java:1101) bei org.springframework. data.mongodb.core.MongoTemplate.doSave (MongoTemplate.java:1034) bei org.springframework.data.mongodb.core.MongoTemplate.save (MongoTemplate.java:981) bei org.springframework.data.mongodb.core.MongoTemplate.save (MongoTemplate.java:969) bei com. mongo.test.HomeController.home (HomeController.java:62) bei sun.reflect.NativeMethodAccessorImpl.invoke0 (native Methode) bei sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62) bei sun.reflect. DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) bei java.lang.reflect.Method.invoke (Method.java:498) um ​​ org.springframework.web.method.support.InvocableHandlerMethod.doInvoke (InvocableHandlerMethod.java:221) bei org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest (InvocableHandlerMethod.java:137) bei org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle (ServletInvocableHandlerMethod.java:111) bei org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod (RequestMappingHandlerAdapter.java:806) bei org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal (RequestMappingHandlerAdapter. java: 729) um org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle (AbstractHandlerMethodAdapter.java:85) um org.springframework.web.servlet.DispatcherServlet.doDispatch (DispatcherServlet.Java: 959) bei org.springframework.web.servlet.DispatcherServlet.doService (DispatcherServlet.java:893) bei org.springframework.web.servlet.FrameworkServlet.processRequest (FrameworkServlet.java:970) bei org .springframework.web.servlet.FrameworkServlet.doGet (FrameworkServlet.java:861) unter javax.servlet.http.HttpServlet.service (HttpServlet.java:635) um org.springframework.web.servlet.FrameworkServlet.service (FrameworkServlet .java-: 846) bei javax.servlet.http.HttpServlet.service (HttpServlet.java:742) bei org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:230) bei org.apach e.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:165) bei org.apache.tomcat.websocket.server.WsFilter.doFilter (WsFilter.java:52) bei org.apache.catalina.core. ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:192) bei org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:165) bei org.apache.catalina.core.StandardWrapperValve.invoke (StandardWrapperValve.java: 198) bei org.apache.catalina.core.StandardContextValve.invoke (StandardContextValve.java:96) bei org.apache.catalina.authenticator.AuthenticatorBase.invoke (AuthenticatorBase.java:478) bei org.apache.catalina.core.StandardHostValve.invoke (StandardHostValve.java:140) bei org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:80) bei org.apache. catalina.valves.AbstractAccessLogValve.invoke (AbstractAccessLogValve.java:624) bei org.apache.catalina.core.StandardEngineValve.invoke (StandardEngineValve.java:87) bei org.apache.catalina.connector.CoyoteAdapter.service (CoyoteAdapter.java:341) um org.apache.coyote.http11.Http11Processor.service (Http11Processor.java:783) um org.apache.coyote.AbstractProcessorLight.proc ess (AbstractProcessorLight.java:66) bei org.apache.coyote.AbstractProtocol $ ConnectionHandler.process (AbstractProtocol.java:798) bei org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.doRun (NioEndpoint. Java: 1441) bei org.apache.tomcat.util.net.SocketProcessorBase.run (SocketProcessorBase.java:49) bei java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1142) bei Java .util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:617) um org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run (TaskThread.java:61) bei java.lang.Thread. rennen (Thre ad.java:745)

+0

Es fehlen Anmerkungen zur Bean-Klasse. wie '@ Table',' @ Column', '@ Entity'. Es ist wichtig für die Zuordnung mit Ihrer Datenbank. – F0XS

+0

ich benutze mongodb database also, brauche diese Annotation nicht, um mit db zu kommunizieren –

+0

das funktioniert gut, aber ich versuche, doppelten Namen einzufügen, dann erzeugt es DuplicateKeyException, aber ich bin nicht nicht am Java-Ende behandeln. –

Antwort

1

Sie können Ihre HandlerExceptionResolver zu handhaben und zeigen die benutzerfreundliche Nachricht an die Benutzeroberfläche erstellen.

How to create HandlerExceptionResolver

Update: Wenn Sie die Ausnahme nur zu handhaben wollen, dann org.springframework.dao.DuplicateKeyException im catch-Block schreiben.

try{ 
    //TODO 
} catch(org.springframework.dao.DuplicateKeyException e){ 
//TODO - Do want you want 
} 
+0

Entschuldigung, ich möchte diese Ausnahme abfangen und eine andere Aufgabe innerhalb dieser Methode ausführen –

+0

Aktualisiert meine Antwort. –

+0

ich habe verwendet DuplicateKeyException des gleichen Pakets es ist nicht Arbeit –

0

Woher wissen Sie, dass es nicht die Ausnahme fängt?Ihr Ausnahmebehandlungscode tut nichts!

Sie müssen sinnvoll etwas hinzufügen tatsächlich etwas tun, wenn eine doppelte Ausnahme

public String home() { 
    try { 
    MongoData data=new MongoData(); 
    data.setDate(new Date()); 
    data.setName("frji"); 
    mongoTemplate.save(data); 
    } catch (DuplicateKeyException | MongoException e) { 
    //Exception handling 
    return "an error occurred: " + e.getMessage(); 
    } 
    return "home"; 
} 

auftreten oder die Ausnahmebehandlung entfernen, und lassen Sie die Ausnahme ausgelöst werden.

public String home() { 
    MongoData data=new MongoData(); 
    data.setDate(new Date()); 
    data.setName("frji"); 
    mongoTemplate.save(data); 
    return "home"; 
} 
+0

Ich versuche zu treffen Diese Methode, wenn es DuplicateKeyException generiert, wird direkt auf der Benutzerseite angezeigt. –

+0

Ich hatte versucht, Aber Ausnahme trat nicht innerhalb Catch-Block gehen –

Verwandte Themen