hibernate - java.lang.IllegalArgumentException: Can not set int field it.besmart.models.Park.idPark to [Ljava.lang.Object; -
i'm dwelling problem. have 3 classes
user , park have manytomany relation, , piano , park have manytoone relation.
in models, interesting parts user.java
@manytomany(fetch = fetchtype.eager) @jointable(name="users_parcheggio", joincolumns = {@joincolumn(name="user_id") }, inversejoincolumns = { @joincolumn(name="park_id") }) private set<park> parks = new hashset<park>(); this park.java
@entity @table(name="parcheggio", catalog="smartpark") public class park implements serializable{ /** * */ private static final long serialversionuid = -7630704706109692038l; @id @generatedvalue(strategy = identity) @column(name = "id_park", unique = true, nullable = false) private int idpark; @notempty @column(name="nome_park") private string nomepark; @column(name="descrizione") private string descrizione; @column(name="indirizzo") private string indirizzo; @column(name="citta") private string citta; @manytomany(fetch = fetchtype.eager) @jointable(name="users_parcheggio", joincolumns = {@joincolumn(name="park_id") }, inversejoincolumns = { @joincolumn(name="user_id") }) private set<user> users = new hashset<user>(); @onetomany(fetch = fetchtype.lazy, cascade=cascadetype.all, mappedby = "park") private list<piano> piano; public park(){ } public park(int idpark, string nomepark, string descrizione, string indirizzo, string citta, set<user> users, list<piano> piano){ this.idpark = idpark; this.nomepark = nomepark; this.descrizione = descrizione; this.indirizzo = indirizzo; this.citta = citta; this.users = users; this.piano = piano; } public list<piano> getpiano() { return piano; } public void setpiano(list<piano> piano) { this.piano = piano; } public int getidpark() { return idpark; } public void setidpark(int idpark) { this.idpark = idpark; } public string getnomepark() { return nomepark; } public void setnomepark(string nomepark) { this.nomepark = nomepark; } public string getdescrizione() { return descrizione; } public void setdescrizione(string descrizione) { this.descrizione = descrizione; } public string getindirizzo() { return indirizzo; } public void setindirizzo(string indirizzo) { this.indirizzo = indirizzo; } public string getcitta() { return citta; } public void setcitta(string citta) { this.citta = citta; } public set<user> getusers() { return users; } public void setusers(set<user> users) { this.users = users; } @override public int hashcode() { final int prime = 31; int result = 1; result = prime * result + idpark; return result; } @override public boolean equals(object obj) { if (this == obj) return true; if (obj == null) return false; if (getclass() != obj.getclass()) return false; park other = (park) obj; if (idpark != other.idpark) return false; return true; } } and in piano.java
@manytoone @joincolumn(name = "id_park") public park getpark() { return park; } public void setpark(park park) { this.park = park; } when use 3 classes in couples (user park or park piano) goes well, have piano given user.
in pianodaoimpl have method
public list<piano> findpianobyuser() { authentication auth = securitycontextholder.getcontext().getauthentication(); string name = auth.getname(); user user = userservice.findbysso(name); int userid = user.getid(); query q = getsession().createquery("from park p join p.users u u.id = :userid").setparameter("userid", userid); list<park> parks = q.list(); query query = getsession().createquery("from piano p p.park in :parks").setparameterlist("parks", parks); list piani = query.list(); return piani; } the q query gives me correctly parks list user. pass list second query , got exception
org.springframework.web.util.nestedservletexception: request processing failed; nested exception org.hibernate.propertyaccessexception: not field value reflection getter of it.besmart.models.park.idpark caused by
java.lang.illegalargumentexception: can not set int field it.besmart.models.park.idpark [ljava.lang.object; what i'm doing wrong?
the cause of issue, idpark of reference type integer can't assigned value of primitive type int.
try replace this.
@column(name = "id_park", unique = true, nullable = false) private integer idpark; with:
@column(name = "id_park", unique = true, nullable = false) private int idpark; try check value of userid have integer not int, because think have exception:
"from park p join p.users u u.id = :userid").setparameter("userid", userid);
Comments
Post a Comment