sql >> Database teknologi >  >> RDS >> Mysql

Hibernate- kunne ikke dovent initialisere en samling af roller:beans.Language.patients, kunne ikke initialisere proxy - ingen session

Din json-konverter forsøger at serialisere hele entiteten, som indeholder listen over alle patienter, der taler hvert sprog. Efter hvad jeg forstod, forventes patientlisten i json ikke. Så du har tre muligheder (ordnet som jeg ville overveje dem):

  • Fjern tilknytningen til patienter i sprogenheden. Har du brug for at få adgang til patienter fra sprogenheden? Hvis ikke, fjern denne kortlægning.
  • Opret en sprog-DTO, hvor du overfører dine data, før du forlader TX-laget. På denne måde vil den, der ringer til tjenesten, aldrig få en LazyInitException. Ingen overraskelse:DTO-felter indstilles altid ivrigt.
  • Konfigurer din json-konverter til ikke at serialisere patientfelterne. Du har ikke sagt, hvilken json lib du bruger. Nogle af dem giver dig en anmærkning for at ignorere nogle felter (@JsonIgnore for Jackson for eksempel), kræver andet java-konfiguration.

For at anvende den første løsning skal du opdatere disse filer på denne måde:

Language.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>

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

Jeg har opdateret no-arg-konstruktøren og setId metode til at protected . Du kan endda opdatere dem til private :kun dvale skal nogensinde bruge dem (og det kan bruge private felter / metoder).



  1. Er der en præstationsforskel mellem CTE, Sub-Query, Temporary Table eller Table Variable?

  2. Grupperet strengaggregering / LISTAGG til SQL Server

  3. JDBC-forbindelsesfejl:Ugenkendt tidszone

  4. Migrer fra Oracle til MySQL