2016-11-03 2 views
0

Ich versuche, basierend auf bestimmten Eingaben mit Spring & Addition zu tun, speichern Sie es in Mongo Datenbank.Nicht in der Lage Mongo DB von Spring mit MongoRepository

Da ich mehrere Zusätzlich zu tun haben:

1.So ein Weg ist, um die Werte manuell hinzufügen und sie in Bean gesetzt und es in der Datenbank zu speichern.

OR

2.Just sie in dem Getter-Feld hinzufügen & bei Bedarf abgerufen werden.

Wenn mit dem zweiten Ansatz versucht, ich bin die Daten in MongoDB nicht in der Lage Code

finden Sie Probe zu speichern: -

Bean Klasse:

class Addition { 

    private double a; 
    private double b; 
    private double c; 
    private double d; 

    //getters and setters of a & b; 

    //getter of c; 
    public double getC() { 
     return a + b; 
    } 

    //getter of d; 
    public double getD() { 
     return getC() + a; 
    } 

} 

Schnittstelle, die MongoRepository erweitert:

@Repository 
public interface AdditionRepository extends MongoRepository<Addition, String> { 

} 

Anrufende Klasse:

@Controller 
public class Add { 

    @Autowired 
    private AdditionRepository additionRepository; 

    @RequestMapping(value = "/add", method = RequestMethod.GET) 
     public void addNumbers(){ 
      Addition addition = new Addition(); 
      addition.setA(1.0); 
      addition.setB(2.0); 
      System.out.println(addition.getC()); //able to print expected value 
      System.out.println(addition.getD()); //able to print expected value 

      additionRepository.save(addition); 

    } 

} 

gespeicherten Daten in Mongo DB:

{ 
    "_id" : ObjectId("581b229bbcf8c006a0eda4b2"), 
    "a" : 1.0, 
    "b" : 2.0, 
    "c" : 0.0, 
    "d" : 0.0, 
} 

Kann jemand bitte lassen Sie mich wissen, wo ich falsch mache, oder jede andere Art und Weise, dies zu tun.

Antwort

0

Die Getter werden nicht wirklich für Persistenz verwendet. Der Rahmen wird mit dem Feld statt: „Die Felder eines Objekts verwendet werden und von den Feldern in dem Dokument zu konvertieren“ http://docs.spring.io/spring-data/mongodb/docs/1.6.3.RELEASE/reference/html/#mapping-conventions

In Ihrem Fall könnten Sie einen Konstruktor erstellen, die sich um die Berechnung stattfinden wird:

class Addition { 

    private double a; 
    private double b; 
    private double c; 
    private double d; 

    public Addition(double a, double b){ 
     this.a = a; 
     this.b = b;   
     this.c = a+b; 
     this.d = this.c + a; 
    } 
} 
+0

Vielen Dank für Ihre Antwort, aber in meinem aktuellen Code, den ich 50 solche Felder in der Bohne habe, initialisieren so 50 solche Felder in Konstruktor und auf ihnen verschiedene arithmetische Berechnung durchführen, so wird es ein guter Ansatz sein? –

Verwandte Themen