Saat Morphia membaca dokumen Anda dari hasil kueri, hal pertama yang dilakukannya adalah membuat instance baru entitas Anda, Student
. Itu hanya memanggil konstruktor tanpa argumen. Tidak ada sihir yang terlibat. Bidang kota diinisialisasi dengan nilai. Setelah selesai, Morphia akan mengambil setiap kunci dalam dokumen yang dikembalikan dari database, menemukan bidang yang dipetakan, dan mengaturnya. Dalam kasus Anda, tidak ada kunci kota dalam dokumen sehingga bidang itu tidak pernah disetel oleh Morphia meninggalkan nilai yang diinisialisasi di tempatnya.
Secara umum, menginisialisasi bidang pada entitas seperti ini adalah praktik yang buruk. Untuk setiap entitas yang dimuat dari database, JVM harus menginisialisasi bidang tersebut ke beberapa nilai hanya untuk menimpanya nanti. Dalam kasus seperti milik Anda di mana bidang tertentu tidak kembali dalam hasil kueri, nilai tersebut tetap ada setelah Morphia mengembalikan instance baru kembali ke aplikasi Anda.