1

I am experiencing strange behavior. I am using hibernate. I have two tables.

@Entity
public class Nemocnica  implements java.io.Serializable {

@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="N_ID")
     private BigDecimal NId;
@Column(name="adresa")
     private String adresa;
@OneToMany
     private Set sanitkas = new HashSet(0);

    public Nemocnica() {
    }


    public Nemocnica( String adresa) {
        this.NId = NId;
    }

    public Nemocnica(BigDecimal NId, String adresa) {
        this.NId = NId;
        this.adresa = adresa;
    }
    public Nemocnica(BigDecimal NId, String adresa, Set sanitkas) {
       this.NId = NId;
       this.adresa = adresa;
       this.sanitkas = sanitkas;
    }

    public BigDecimal getNId() {
        return this.NId;
    }

    public void setNId(BigDecimal NId) {
        this.NId = NId;
    }
    public String getAdresa() {
        return this.adresa;
    }

    public void setAdresa(String adresa) {
        this.adresa = adresa;
    }
    public Set getSanitkas() {
        return this.sanitkas;
    }

    public void setSanitkas(Set sanitkas) {
        this.sanitkas = sanitkas;
    }
}

and second

@Entity
public class Sanitka  implements java.io.Serializable {


     private BigDecimal sanitkaId;
     private transient Nemocnica nemocnica;
     private BigDecimal kapacita;
     @ManyToOne
     @JoinColumn(name="nemocnica_n_id")
     private Set sanitaris = new HashSet(0);

    public Sanitka() {
    }


    public Sanitka(BigDecimal sanitkaId, Nemocnica nemocnica, BigDecimal kapacita) {
        this.sanitkaId = sanitkaId;
        this.nemocnica = nemocnica;
        this.kapacita = kapacita;
    }
    public Sanitka(BigDecimal sanitkaId, Nemocnica nemocnica, BigDecimal kapacita, Set sanitaris) {
       this.sanitkaId = sanitkaId;
       this.nemocnica = nemocnica;
       this.kapacita = kapacita;
       this.sanitaris = sanitaris;
    }

    public BigDecimal getSanitkaId() {
        return this.sanitkaId;
    }

    public void setSanitkaId(BigDecimal sanitkaId) {
        this.sanitkaId = sanitkaId;
    }
    @ManyToOne(cascade=CascadeType.ALL) 
    public Nemocnica getNemocnica() {
        return this.nemocnica;
    }

    public void setNemocnica(Nemocnica nemocnica) {
        this.nemocnica = nemocnica;
    }
    public BigDecimal getKapacita() {
        return this.kapacita;
    }

    public void setKapacita(BigDecimal kapacita) {
        this.kapacita = kapacita;
    }
    public Set getSanitaris() {
        return this.sanitaris;
    }

    public void setSanitaris(Set sanitaris) {
        this.sanitaris = sanitaris;
    }
}

And routes that mannipulate with them.

nemocnicaRoute:

@Path("nemocnica")
public class nemocnicaRoute {
   // private static final helper db = new helper();
    @GET
    @Path("all")
    @Produces(MediaType.APPLICATION_JSON)
    public String getName(){
        List<Nemocnica> l = db.helper.getNemocnicas();
        GsonBuilder builder = new GsonBuilder();
        Gson gson = builder.create();
        //System.out.println( json );
        //return l.toString();
        return gson.toJson(l);
    }
   // another methods
 }

sanitkaRoute

@Path("sanitka")
public class sanitkaRoute {
    //private static final helper db = new helper();
    @GET
    @Path("all")
    @Produces("text/plain")
    public String getName(){
        List<Sanitka> l = db.helper.getSanitkas();
        GsonBuilder builder = new GsonBuilder();
        Gson gson = builder.create();
        //System.out.println( json );
        //return l.toString();
        return gson.toJson(l);
    }
   // another methods
  }

I am using these two getName() methods to retrieve all data from said tables.

This cause strange behavior , if i invoke get request on nemocnicaRoute first , it works very well as it should.

However when i invoke get requet on sanitkaRoute first , it works but after that when i want to invoke get request on nemocniceRoute it throws

java.lang.UnsupportedOperationException: Attempted to serialize java.lang.Class: org.hibernate.proxy.HibernateProxy. Forgot to register a type adapter?

Which confuses me , bcs this does not happen when i invoke getRequest on nemocnicaRoute first.

How could i fix this strange behavior?

All help appreciated

Darlyn
  • 4,152
  • 11
  • 30
  • 73

0 Answers0