Rumah > Java > javaTutorial > Bagaimana untuk Mengelakkan Ralat Pensirilan Jackson dengan Objek Hibernate yang Dimuat Malas?

Bagaimana untuk Mengelakkan Ralat Pensirilan Jackson dengan Objek Hibernate yang Dimuat Malas?

Susan Sarandon
Lepaskan: 2024-12-02 00:20:08
asal
836 orang telah melayarinya

How to Avoid Jackson Serialization Errors with Lazy-Loaded Hibernate Objects?

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;
    }

}
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan