Rumah >Java >javaTutorial >Bagaimana untuk Mengelakkan Ralat Pensirilan Jackson dengan Objek Hibernate yang Dimuat Malas?
Mengelakkan Pensirilan Jackson bagi Objek Malas Tidak Diambil
Jackson, perpustakaan Java yang popular untuk pengikatan data, boleh menghadapi masalah apabila mensiri objek dengan sifat malas diambil. Dalam kes ini, sifat yang tidak diambil, yang tidak dimuatkan ke dalam sesi, menyebabkan pengecualian "tidak dapat memulakan proksi - tiada Sesi" semasa bersiri.
Penyelesaian:
Untuk menyelesaikan isu ini, kami perlu memaklumkan Jackson untuk mengabaikan sifat yang diambil secara malas semasa penyirian. Dalam versi Spring yang lebih lama (3.1 dan ke bawah), ini dicapai dengan mencipta HibernateAwareObjectMapper tersuai dan menambahkannya pada MappingJackson2HttpMessageConverter tersuai.
Walau bagaimanapun, dalam versi Spring 3.1.2 dan ke atas, Spring menyediakan MappingJackson2HttpMessageConverter sendiri yang termasuk fungsi yang diperlukan. Kami boleh mengkonfigurasi penukar ini dan menambahkannya pada HttpMessageConverters aplikasi.
Pelaksanaan:
Konfigurasi Java:
@Configuration @EnableWebMvc public class MyConfigClass extends WebMvcConfigurerAdapter { @Override public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { converters.add(jacksonMessageConverter()); super.configureMessageConverters(converters); } public MappingJackson2HttpMessageConverter jacksonMessageConverter() { MappingJackson2HttpMessageConverter messageConverter = new MappingJackson2HttpMessageConverter(); ObjectMapper mapper = new ObjectMapper(); mapper.registerModule(new Hibernate4Module()); messageConverter.setObjectMapper(mapper); return messageConverter; } }
XML Konfigurasi:
<mvc:message-converters> <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"> <property name="objectMapper"> <bean class="com.pastelstudios.json.HibernateAwareObjectMapper" /> </property> </bean> </mvc:message-converters>
Dengan mengkonfigurasi MappingJackson2HttpMessageConverter untuk menggunakan Hibernate4Module, Jackson akan diarahkan untuk mengabaikan sifat yang diambil malas semasa bersiri. Ini menyelesaikan isu proksi yang tidak dimulakan dan membenarkan pengawal anda memulangkan objek Pengguna tanpa menghadapi ralat penyirian.
Atas ialah kandungan terperinci Bagaimana untuk Mengelakkan Ralat Pensirilan Jackson dengan Objek Hibernate yang Dimuat Malas?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!