2016-04-07 2 views
0

Как genearate "_id": "01A63D2B-1724-456E-B2C0-3B3729951654" вместо "_id": ObjectId ("570602c46399e320c3022c6b")как autoGenearte _ID вместо MongoDB ObjectId()

Мой 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; 
} 
} 

Функция добавления JSON данных в 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"); 
    } 

* Как автогенерировать идентификатор? а не MongoDb.

+0

вам необходимо установить _id юдоль перед сохранением документа – profesor79

ответ

0

Заменить существующий конструктор без аргументов со следующими один в Student.class

public Student(){ 

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

}

  • Это будет генерировать случайный идентификатор вместо MongoDB ObjectId
+0

для меня это работает и сохраняется запись в БДЕ с пользовательским ид. Но после этого он вызывает «ClassCastException», говорящий «Long», не может быть преобразован в «Integer». Любые входы? Вопрос [ссылка] (http://stackoverflow.com/questions/42383336/how-to-use-id-when-using-documentdb-via-mongdb-api-in-spring-data) –

0

Я думаю, вам нужно добавить поле «_id», вставив t он документирует в MongoDB. поскольку вы не укажете какое-либо поле «_id», оно автоматически будет создано MongoDB. Вы также можете использовать метод getNextSequence() mongodb для генерации идентификатора в соответствии с вашими предпочтениями.

Примечание: StudentID и _id - это два разных объекта в одном документе.

Я надеюсь, что эта ссылка будет полезна для Вас: https://docs.mongodb.org/manual/tutorial/create-an-auto-incrementing-field/

Смежные вопросы