Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Hibernate- gagal menginisialisasi kumpulan peran dengan malas:beans.Language.patients, tidak dapat menginisialisasi proxy - tidak ada Sesi

Konverter json Anda mencoba membuat serial seluruh entitas, yang berisi daftar semua pasien yang berbicara setiap bahasa. Dari apa yang saya pahami, daftar pasien di json tidak diharapkan. Jadi Anda memiliki tiga opsi (diurutkan di mana saya akan mempertimbangkannya):

  • Hapus pemetaan ke pasien di entitas Bahasa. Apakah Anda perlu mendapatkan akses ke pasien dari entitas bahasa? Jika tidak, hapus pemetaan ini.
  • Buat DTO Bahasa tempat Anda mentransfer data sebelum keluar dari lapisan tx. Dengan cara ini siapa pun yang memanggil layanan tidak akan pernah mendapatkan LazyInitException. Tidak mengherankan :bidang DTO selalu disetel dengan penuh semangat.
  • Konfigurasikan konverter json Anda untuk tidak membuat serial bidang pasien. Anda belum mengatakan json lib mana yang Anda gunakan. Beberapa dari mereka memberi Anda anotasi untuk mengabaikan beberapa bidang (@JsonIgnore untuk Jackson misalnya), yang lain memerlukan konfigurasi java.

Untuk menerapkan solusi pertama, perbarui file-file itu dengan cara ini :

Bahasa.hbm.xml

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<!-- Generated Sep 14, 2016 4:33:23 PM by Hibernate Tools 4.3.1 -->
<hibernate-mapping>
    <class name="beans.Language" table="language" catalog="myglukose" optimistic-lock="version">
        <id name="idlanguage" type="java.lang.Integer">
            <column name="idlanguage" />
            <generator class="identity" />
        </id>
        <property name="language" type="string">
            <column name="language" length="45" not-null="true" />
        </property>
    </class>
</hibernate-mapping>

Bahasa.java

public class Language  implements java.io.Serializable {
    private Integer idlanguage;
    private String language;

    protected Language() {
    }


    public Language(String language) {
        this.language = language;
    }

    public Integer getIdlanguage() {
        return this.idlanguage;
    }

    protected void setIdlanguage(Integer idlanguage) {
        this.idlanguage = idlanguage;
    }
    public String getLanguage() {
        return this.language;
    }

    public void setLanguage(String language) {
        this.language = language;
    }
}

Saya telah memperbarui konstruktor no-arg dan setId metode untuk protected . Anda bahkan dapat memperbaruinya ke private :hanya hibernasi yang boleh menggunakannya (dan dapat menggunakan bidang/metode pribadi).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. cara memulai Mysql di git bash di windows 8.1

  2. Apa perbedaan antara menggunakan INDEX vs KEY di MySQL?

  3. Bagaimana menangani zona waktu MySQL dalam skrip

  4. Menginstal MySQL di CentOS 7

  5. Bagaimana cara memindahkan kolom dalam tabel MySQL?