Java : org.mise en veille prolongée.PropertyAccessException tout en appelant setter et getter
Je suis la construction d'une application en java à l'aide de restlet et Hibernate .
J'ai de l'utilisateur de l'entité de la classe et à chaque fois que je demande http get .
J'obtiens l'erreur .
{
"error": "20000:Hibernate Exception. : org.hibernate.PropertyAccessException: IllegalArgumentException occurred while calling setter of tecd.persistence.entity.User.idUser",
"status": 500
}
Voici ma classe d'entité .
package tecd.persistence.entity;
import java.io.Serializable;
import java.sql.Timestamp;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import org.json.JSONObject;
/**
* @author Rohit
*
*/
@Entity
@Table(name = "user")
public class User implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "iduser", nullable = false, unique = true, length = 255)
private String idUser;
@Column(name = "name", nullable = true, length = 255)
private String name;
@Column(name = "username", nullable = false,unique = true, length = 255)
private String userName;
@Column(name = "password", nullable = false, length = 255)
private String password;
@Column(name = "contactFirstName", nullable = true, length = 255)
private String contactFirstName;
@Column(name = "contactLastName", nullable = true, length = 255)
private String contactLastName;
@Column(name = "contactEmail", nullable = true, length = 255)
private String contactEmail;
@Column(name = "contactMobile", nullable = true, length = 32)
private String contactMobile;
@Column(name = "contactPhone", nullable = true, length = 32)
private String contactPhone;
@Column(name = "contactAddress", nullable = true, columnDefinition = "MEDIUMTEXT")
private String contactAddress;
@Column(name = "status", nullable = false)
private Integer status;
@Column(name = "type", nullable = false)
private Integer type;
@Column(name = "createdDT", nullable = false)
private Timestamp createdDate;
@Column(name = "updatedDT", nullable = true)
private Timestamp updatedDate;
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append("idUser = ").append(this.idUser).append(",");
sb.append("name = ").append(this.name).append(",");
sb.append("username = ").append(this.userName).append(",");
sb.append("password = ").append(this.password).append(",");
sb.append("contactAddress = ").append(this.contactAddress).append(",");
sb.append("contactEmail = ").append(this.contactEmail).append(",");
sb.append("status = ").append(this.status).append(",");
sb.append("type = ").append(this.type).append(",");
sb.append("contactFirstName = ").append(this.contactFirstName)
.append(",");
sb.append("contactLastName = ").append(this.contactLastName)
.append(",");
sb.append("contactPhone = ").append(this.contactPhone).append(",");
sb.append("contactMobile = ").append(this.contactMobile).append(",");
sb.append("createdDate = ").append(this.createdDate).append(",");
sb.append("updatedDate = ").append(this.updatedDate);
return sb.toString();
}
public JSONObject toJSON() {
try {
JSONObject jsonObj = new JSONObject();
jsonObj.put("iduser", this.idUser);
jsonObj.put("username", this.userName);
jsonObj.put("password", this.password);
jsonObj.put("createdDate", this.createdDate);
jsonObj.put("status", this.status.toString());
jsonObj.put("type", this.type.toString());
//These fields may have null values
if (this.name != null)
jsonObj.put("name", setValue(this.name));
if (this.contactFirstName != null)
jsonObj.put("contactFirstName", setValue(this.contactFirstName));
if (this.contactLastName != null)
jsonObj.put("contactLastName", setValue(this.contactLastName));
if (this.contactAddress != null)
jsonObj.put("contactAddress", setValue(this.contactAddress));
if (this.contactPhone != null)
jsonObj.put("contactPhone", setValue(this.contactPhone));
if (this.contactMobile != null)
jsonObj.put("contactMobile", setValue(this.contactMobile));
if (this.contactEmail != null)
jsonObj.put("contactEmail", setValue(this.contactEmail));
if (this.updatedDate != null)
jsonObj.put("updatedDate", setValue(this.updatedDate));
if (this.contactPhone != null)
jsonObj.put("contactPhone", setValue(this.contactPhone));
if (this.contactAddress != null)
jsonObj.put("contactAddress", setValue(this.contactAddress));
System.out.println("business JSON object"+jsonObj);
return jsonObj;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
public Object setValue(Object input) {
Object fieldValue = ((input == null) ? JSONObject.NULL.toString()
: input);
return fieldValue;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getUserName() {
return userName ;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getidUser() {
return idUser;
}
public void setidUser(String idUser) {
this.idUser = idUser;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getContactFirstName() {
return contactFirstName;
}
public void setContactFirstName(String contactFirstName) {
this.contactFirstName = contactFirstName;
}
public String getContactLastName() {
return contactLastName;
}
public void setContactLastName(String contactLastName) {
this.contactLastName = contactLastName;
}
public String getContactEmail() {
return contactEmail;
}
public void setContactEmail(String contactEmail) {
this.contactEmail = contactEmail;
}
public String getContactMobile() {
return contactMobile;
}
public void setContactMobile(String contactMobile) {
this.contactMobile = contactMobile;
}
public String getContactPhone() {
return contactPhone;
}
public void setContactPhone(String contactPhone) {
this.contactPhone = contactPhone;
}
public String getContactAddress() {
return contactAddress;
}
public void setContactAddress(String contactAddress) {
this.contactAddress = contactAddress;
}
public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}
public Integer getType() {
return type;
}
public void setType(Integer type) {
this.type = type;
}
public Timestamp getCreatedDate() {
return createdDate;
}
public void setCreatedDate(Timestamp createdDate) {
this.createdDate = createdDate;
}
public Timestamp getUpdatedDate() {
return updatedDate;
}
public void setUpdatedDate(Timestamp updatedDate) {
this.updatedDate = updatedDate;
}
}
Et le fichier xml ressemble à
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="tecd.persistence.entity.User" table="user">
<id name="idUser" type="long" unsaved-value="null">
<column name="idUser" not-null="true"/>
<generator class="identity"/>
</id>
<property name="userName">
<column name="username" not-null="true" />
</property>
<property name="password">
<column name="password" not-null="true" />
</property>
<property name="status">
<column name="status" not-null="true" />
</property>
<property name="type">
<column name="type" not-null="true" />
</property>
<property name="createdDate">
<column name="createdDT" not-null="true" />
</property>
<property name="updatedDate">
<column name="updatedDT" not-null="false" />
</property>
<property name="name">
<column name="name" length="255" not-null="false" />
</property>
<property name="contactFirstName">
<column name="contactFirstName" length="255" not-null="false" />
</property>
<property name="contactLastName">
<column name="contactLastName" length="255" not-null="false" />
</property>
<property name="contactEmail">
<column name="contactEmail" length="255" not-null="false" />
</property>
<property name="contactMobile">
<column name="contactMobile" length="32" not-null="false" />
</property>
<property name="contactPhone">
<column name="contactPhone" length="32" not-null="false" />
</property>
<property name="contactAddress">
<column name="contactAddress" not-null="false" />
</property>
</class>
</hibernate-mapping>
Veuillez me suggérer quel est le problème ici .Est-il une version de java problème ou ce que je ne suis pas en mesure de comprendre ce problème .
Table Mysql ressemble
CREATE TABLE `user` (
`idUser` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(255) DEFAULT NULL,
`password` varchar(255) DEFAULT NULL,
`name` varchar(255) DEFAULT NULL,
`contactFirstName` varchar(255) DEFAULT NULL,
`contactLastName` varchar(255) DEFAULT NULL,
`contactEmail` varchar(255) DEFAULT NULL,
`contactMobile` varchar(32) DEFAULT NULL,
`contactPhone` varchar(32) DEFAULT NULL,
`contactAddress` mediumtext,
`status` int(11) NOT NULL,
`type` int(11) NOT NULL,
`createdDT` datetime NOT NULL,
`updatedDT` datetime DEFAULT NULL,
PRIMARY KEY (`idUser`)
)
Erreur :
org.hibernate.PropertyAccessException: IllegalArgumentException occurred while calling setter of tecd.persistence.entity.User.idUser
at org.hibernate.property.BasicPropertyAccessor$BasicSetter.set(BasicPropertyAccessor.java:104)
at org.hibernate.tuple.entity.AbstractEntityTuplizer.setIdentifier(AbstractEntityTuplizer.java:211)
at org.hibernate.tuple.entity.AbstractEntityTuplizer.instantiate(AbstractEntityTuplizer.java:353)
at org.hibernate.persister.entity.AbstractEntityPersister.instantiate(AbstractEntityPersister.java:3600)
at org.hibernate.impl.SessionImpl.instantiate(SessionImpl.java:1275)
at org.hibernate.impl.SessionImpl.instantiate(SessionImpl.java:1264)
at org.hibernate.loader.Loader.instanceNotYetLoaded(Loader.java:1290)
at org.hibernate.loader.Loader.getRow(Loader.java:1197)
at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:568)
at org.hibernate.loader.Loader.doQuery(Loader.java:689)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:224)
at org.hibernate.loader.Loader.doList(Loader.java:2211)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2095)
at org.hibernate.loader.Loader.list(Loader.java:2090)
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:375)
at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:338)
at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:172)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121)
at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
at tecd.persistence.UserDAO.viewUser(UserDAO.java:53)
at tecd.resource.UserResource.viewUser(UserResource.java:64)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.restlet.resource.ServerResource.doHandle(ServerResource.java:503)
at org.restlet.resource.ServerResource.get(ServerResource.java:707)
at org.restlet.resource.ServerResource.doHandle(ServerResource.java:589)
at org.restlet.resource.ServerResource.doNegotiatedHandle(ServerResource.java:649)
at org.restlet.resource.ServerResource.doConditionalHandle(ServerResource.java:348)
at org.restlet.resource.ServerResource.handle(ServerResource.java:952)
at org.restlet.resource.Finder.handle(Finder.java:246)
at org.restlet.routing.Filter.doHandle(Filter.java:159)
at org.restlet.routing.Filter.handle(Filter.java:206)
at org.restlet.routing.Router.doHandle(Router.java:431)
at org.restlet.routing.Router.handle(Router.java:648)
at org.restlet.routing.Filter.doHandle(Filter.java:159)
at org.restlet.routing.Filter.handle(Filter.java:206)
at org.restlet.routing.Filter.doHandle(Filter.java:159)
at org.restlet.routing.Filter.handle(Filter.java:206)
at org.restlet.routing.Filter.doHandle(Filter.java:159)
at org.restlet.engine.application.StatusFilter.doHandle(StatusFilter.java:155)
at org.restlet.routing.Filter.handle(Filter.java:206)
at org.restlet.routing.Filter.doHandle(Filter.java:159)
at org.restlet.routing.Filter.handle(Filter.java:206)
at org.restlet.engine.CompositeHelper.handle(CompositeHelper.java:211)
at org.restlet.engine.application.ApplicationHelper.handle(ApplicationHelper.java:84)
at org.restlet.Application.handle(Application.java:381)
at org.restlet.routing.Filter.doHandle(Filter.java:159)
at org.restlet.routing.Filter.handle(Filter.java:206)
at org.restlet.routing.Router.doHandle(Router.java:431)
at org.restlet.routing.Router.handle(Router.java:648)
at org.restlet.routing.Filter.doHandle(Filter.java:159)
at org.restlet.routing.Filter.handle(Filter.java:206)
at org.restlet.routing.Router.doHandle(Router.java:431)
at org.restlet.routing.Router.handle(Router.java:648)
at org.restlet.routing.Filter.doHandle(Filter.java:159)
at org.restlet.engine.application.StatusFilter.doHandle(StatusFilter.java:155)
at org.restlet.routing.Filter.handle(Filter.java:206)
at org.restlet.routing.Filter.doHandle(Filter.java:159)
at org.restlet.routing.Filter.handle(Filter.java:206)
at org.restlet.engine.CompositeHelper.handle(CompositeHelper.java:211)
at org.restlet.Component.handle(Component.java:392)
at org.restlet.Server.handle(Server.java:516)
at org.restlet.engine.connector.ServerConnectionHelper.handle(ServerConnectionHelper.java:257)
at org.restlet.engine.connector.ServerConnectionHelper.doHandleInbound(ServerConnectionHelper.java:186)
at org.restlet.engine.connector.BaseHelper$2.run(BaseHelper.java:593)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.IllegalArgumentException: argument type mismatch
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.hibernate.property.BasicPropertyAccessor$BasicSetter.set(BasicPropertyAccessor.java:42)
... 69 more
2014-06-08 13:51:11 0:0:0:0:0:0:0:1 - - 8100 GET /TECDRestService/user/Arohit - 500 - 0 1907 http://localhost:8100 Mozilla/5.0 (Windows NT 6.3; WOW64; rv:29.0) Gecko/20100101 Firefox/29.0 -
- Pouvez-vous ajouter de la pleine stacktrace s'il vous plaît?
- vérifier les mises à jour
- Est-ce avant ou après que vous cange le type en db?
- de ses avant seulement
Vous devez vous connecter pour publier un commentaire.
Votre
idUser
est définie comme une valeur de type long en db. Dans votre Objet, il est unString
. Veuillez modifierInteger
.getidUser
etsetidUser
àgetIdUser
etsetIdUser
et essayer à nouveau?Dans votre Java @Entité de l'Utilisateur, l'idUser champ a l'annotation @GeneratedValue(stratégie = GenerationType.AUTO). Cela signifie que Hibernate génère un ENTIER de valeur unique au niveau base de données, c'est à dire qu'il attribuera un NUMÉRO qui n'a jamais été utilisé dans la base de données, et ne seront jamais recyclés.
Parce que vous avez mis idUser pour le type Chaîne de caractères, vous obtenez la IllegalArgumentException.
Considérons le code suivant:
Cela indique à hibernate d'injecter de l'id unique à l'aide de l'incubateur fourni, et le setter attribuera un entier en une Chaîne de caractères.
Espérons que cette aide!
MODIFIER
Vous aurez également à changer votre schéma de base de données pour accepter le type VARCHAR pour le domaine de l'idUser.