title: Java : org.hibernate.PropertyAccessException while calling setter and getter
body: <p>I am building an application using in java restlet and Hibernate .</p>
  
  <p>I have user entity class and whenever I am calling http get .
  I am getting the error .</p>
  
  <pre><code>{
      "error": "20000:Hibernate Exception. : org.hibernate.PropertyAccessException: IllegalArgumentException occurred while calling setter of tecd.persistence.entity.User.idUser",
      "status": 500
  }
  </code></pre>
  
  <p>Here Is my entity class .</p>
  
  <pre class="lang-java prettyprint-override"><code>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;
      }
  
  }
  </code></pre>
  
  <p>And respective xml file looks like </p>
  
  <pre class="lang-xml prettyprint-override"><code>&lt;?xml version="1.0"?&gt;
  &lt;!DOCTYPE hibernate-mapping PUBLIC
  "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
  "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"&gt;
  &lt;hibernate-mapping&gt;
      &lt;class name="tecd.persistence.entity.User" table="user"&gt;    
      &lt;id name="idUser" type="long" unsaved-value="null"&gt;
          &lt;column name="idUser" not-null="true"/&gt;
          &lt;generator class="identity"/&gt;
      &lt;/id&gt;
          &lt;property name="userName"&gt;
              &lt;column name="username" not-null="true" /&gt;
          &lt;/property&gt;
          &lt;property name="password"&gt;
              &lt;column name="password" not-null="true" /&gt;
          &lt;/property&gt;     
          &lt;property name="status"&gt;
              &lt;column name="status" not-null="true" /&gt;
          &lt;/property&gt;
          &lt;property name="type"&gt;
              &lt;column name="type" not-null="true" /&gt;
          &lt;/property&gt;
          &lt;property name="createdDate"&gt;
              &lt;column name="createdDT" not-null="true" /&gt;
          &lt;/property&gt;
          &lt;property name="updatedDate"&gt;
              &lt;column name="updatedDT" not-null="false" /&gt;
          &lt;/property&gt;
          &lt;property name="name"&gt;
              &lt;column name="name" length="255" not-null="false" /&gt;
          &lt;/property&gt;
          &lt;property name="contactFirstName"&gt;
              &lt;column name="contactFirstName" length="255" not-null="false" /&gt;
          &lt;/property&gt;
          &lt;property name="contactLastName"&gt;
              &lt;column name="contactLastName" length="255" not-null="false" /&gt;
          &lt;/property&gt;
          &lt;property name="contactEmail"&gt;
              &lt;column name="contactEmail" length="255" not-null="false" /&gt;
          &lt;/property&gt;
          &lt;property name="contactMobile"&gt;
              &lt;column name="contactMobile" length="32" not-null="false" /&gt;
          &lt;/property&gt;     
          &lt;property name="contactPhone"&gt;
              &lt;column name="contactPhone" length="32" not-null="false" /&gt;
          &lt;/property&gt;     
          &lt;property name="contactAddress"&gt;
              &lt;column name="contactAddress" not-null="false" /&gt;
          &lt;/property&gt;     
  
      &lt;/class&gt;
  &lt;/hibernate-mapping&gt;
  </code></pre>
  
  <p>Please suggest me what is the problem here .Is there any java version issue  or what I am not able to figure out this issue .</p>
  
  <p>Mysql table looks like </p>
  
  <pre class="lang-sql prettyprint-override"><code>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`)
  )
  </code></pre>
  
  <p>Error :</p>
  
  <pre><code>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    -
  </code></pre>