This is my Sender entity
@Entity
public class Sender {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long senderId;
...
...
public long getSenderId() {
return senderId;
}
public void setSenderId(long senderId) {
this.senderId = senderId;
}
}
When I try to execute following query:
StringBuilder query = new StringBuilder();
query.append("Select sender.* ");
query.append("From sender ");
query.append("INNER JOIN coupledsender_subscriber ");
query.append("ON coupledsender_subscriber.Sender_senderId = sender.SenderId ");
query.append("WHERE coupledsender_subscriber.Subscriber_subscriberId = ? ");
SQLQuery q = (SQLQuery) sessionFactory.getCurrentSession().createSQLQuery(query.toString());
q.setResultTransformer(Transformers.aliasToBean(Sender.class));
q.setLong(0, subscriberId);
return q.list();
The following error occures:
ERROR: org.hibernate.property.BasicPropertyAccessor - HHH000123: IllegalArgumentException in class: be.gimme.persistence.entities.Sender, setter method of property: senderId
ERROR: org.hibernate.property.BasicPropertyAccessor - HHH000091: Expected type: long, actual value: java.math.BigInteger
This happens because the senderId in the class Sender is actually a long instead of a BigInteger (which is returned by Hibernate).
I was wondering what the best practice was in a case like this, should I be using BigIntegers as id's (Seems a bit of an overkill)?
Should I convert the query results to objects of class Sender manually (That would be a pitty)? Or can I just make Hibernate return long
id's instead of BigInteger
s? Or any other ideas?
I'm using Spring, Hibernate 4.1.1 and MySQL