Hibernasi log properti entitas kotor?

Saya menggunakan JPA dengan Hibernate sebagai penyedia saya.

Saya punya kasus di mana suatu entitas ditandai sebagai kotor dan saya tidak yakin mengapa. Apakah ada logger yang dapat diaktifkan yang akan mencetak mengapa suatu entitas ditandai sebagai kotor? Dengan kata lain, properti apa pada entitas yang berubah sehingga menyebabkannya ditandai sebagai kotor?

Saya menggunakan SLF4j dan logback untuk login. Yang terbaik yang bisa saya temukan sejauh ini adalah

<logger name="org.hibernate.persister.entity.AbstractEntityPersister" level="trace" />

Yang akan memberi saya pernyataan log seperti ini:

26-Apr-2013 09:24:50.054 [SimpleAsyncTaskExecutor-8] TRACE o.h.p.entity.AbstractEntityPersister - com.example.MyEntity.myEntityProperty is dirty

Tapi itu juga mencakup sejumlah besar pernyataan jejak lainnya yang saya lebih suka tidak dicatat.


person FGreg    schedule 26.04.2013    source sumber


Jawaban (1)


Ditemukan satu yang akan berfungsi jika bukan karena bug dalam kode Hibernasi.

org.hibernate.event.internal.DefaultFlushEntityEventListener.logDirtyProperties(Serializable, int[], EntityPersister)

Metode ini persis seperti yang saya cari dan mengaktifkan penelusuran untuk org.hibernate.event.internal.DefaultFlushEntityEventListener memiliki dampak yang sangat kecil. Sayangnya mengaktifkan jejak menggunakan:

<logger name="org.hibernate.event.internal.DefaultFlushEntityEventListener" level="trace" />

menghasilkan pesan log seperti ini:

26-Apr-2013 09:51:33.370 [SimpleAsyncTaskExecutor-8] TRACE o.h.e.i.DefaultFlushEntityEventListener - Found dirty properties [[com.example.MyEntity#1]] : [Ljava.lang.String;@221c75
26-Apr-2013 09:51:33.370 [SimpleAsyncTaskExecutor-8] TRACE o.h.e.i.DefaultFlushEntityEventListener - Updating entity: [com.example.MyEntity#1]

Masalahnya adalah [Ljava.lang.String;@221c75 seharusnya berupa daftar nama properti.

person FGreg    schedule 26.04.2013