2016-04-07 21 views
0

Wie "_id" genearate: "01A63D2B-1724-456E-B2C0-3B3729951654" statt "_id": ObjectId ("570602c46399e320c3022c6b")wie man autoGenearte statt mongoDB ObjectId() _ID

Mein Student.class

@Entity("student") 
public class Student { 
@Id 
private String Id; 

private long studentId; 
private String studentName; 
private String qualification; 

public Student(){ 

} 

public Student(long studentId, String studentName, String qualification) { 
    this.studentId = studentId; 
    this.studentName = studentName; 
    this.qualification = qualification; 
} 

public long getStudentId() { 
    return studentId; 
} 

public void setStudentId(long studentId) { 
    this.studentId = studentId; 
} 

public String getStudentName() { 
    return studentName; 
} 

public void setStudentName(String studentName) { 
    this.studentName = studentName; 
} 

public String getQualification() { 
    return qualification; 
} 

public void setQualification(String qualification) { 
    this.qualification = qualification; 
} 
} 

Funktion hinzufügen JSON-Daten zu MongoDB:

public void importFromJsonToMongoDB(File file) throws FileNotFoundException{ 

     try{ 
     String strJson = FileUtils.readFileToString(file, StandardCharsets.UTF_8); 
     JSONArray jsonArr = new JSONArray(strJson); 

     for (int i = 0; i < jsonArr.length(); i++) 
     { 
      JSONObject jsonObj = jsonArr.getJSONObject(i); 
      String str = jsonObj.toString(); 
      ObjectMapper mapper = new ObjectMapper(); 
      Student std = mapper.readValue(str, Student.class); 
      sr.save(std); 
     } 
     }catch (Exception e) { 
     e.printStackTrace(); 
     System.out.println("Error While parsing data"); 
    } 

* Wie ID automatisch generieren? anstatt dass MongoDb es erzeugt.

+0

Sie brauchen _id vale zu setzen, bevor Dokument zu speichern – profesor79

Antwort

0

Ersetzen des vorhandenen NO-Arg- Constructor mit folgenden in einem Student.class

public Student(){ 

    super(); 
    id = UUID.randomUUID().toString(); 

}

  • Diese Zufalls ID anstelle von MongoDB ObjectId erzeugen
+0

für mich das funktioniert und hält den Rekord in der db mit benutzerdefinierter ID. Aber danach wirft es 'ClassCastException' und sagt' Long' kann nicht in 'Integer' umgewandelt werden. Irgendwelche Eingaben? Frage [link] (http://stackoverflow.com/questions/42383336/how-to-use-id-when-using-documentdb-via-mongdb-api-in-spring-data) –

0

Ich denke, Sie müssen "_id" Feld hinzufügen, während Sie t einfügen Er dokumentiert in MongoDB. Da Sie kein Feld "_id" angeben, wird es automatisch von MongoDB generiert. Sie können auch die Methode getNextSequence() von mongodb verwenden, um die ID nach Ihren Wünschen zu generieren.

Hinweis: StudentID und _id sind zwei verschiedene Entitäten im selben Dokument.

Ich hoffe, dass diese Verbindung für Sie nützlich sein wird: https://docs.mongodb.org/manual/tutorial/create-an-auto-incrementing-field/

Verwandte Themen