So I'm trying to get all columns of 2 tables into my custom created class without looping into the array. But I cant make it work.
Here is my classes:
SampleForm:
public class SampleForm {
List<Tbaudittrail> audittrail;
List<Tbauditevents> auditevents;
public SampleForm(List<Tbaudittrail> audittrail, List<Tbauditevents> auditevents) {
super();
this.audittrail = audittrail;
this.auditevents = auditevents;
}
public List<Tbaudittrail> getAudittrail() {
return audittrail;
}
public void setAudittrail(List<Tbaudittrail> audittrail) {
this.audittrail = audittrail;
}
public List<Tbauditevents> getAuditevents() {
return auditevents;
}
public void setAuditevents(List<Tbauditevents> auditevents) {
this.auditevents = auditevents;
}
Tbaudittrail:
public class Tbaudittrail {
private Integer audittrailid;
private String eventname;
private String eventdescription;
private String username;
private Date eventdatetime;
public Tbaudittrail(Integer audittrailid, String eventname, String eventdescription, String username,
Date eventdatetime) {
super();
this.audittrailid = audittrailid;
this.eventname = eventname;
this.eventdescription = eventdescription;
this.username = username;
this.eventdatetime = eventdatetime;
}
public Tbaudittrail() {
}
public Integer getAudittrailid() {
return audittrailid;
}
public void setAudittrailid(Integer audittrailid) {
this.audittrailid = audittrailid;
}
public String getEventname() {
return eventname;
}
public void setEventname(String eventname) {
this.eventname = eventname;
}
public String getEventdescription() {
return eventdescription;
}
public void setEventdescription(String eventdescription) {
this.eventdescription = eventdescription;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public Date getEventdatetime() {
return eventdatetime;
}
public void setEventdatetime(Date eventdatetime) {
this.eventdatetime = eventdatetime;
}
Tbauditevents:
public class Tbauditevents {
private Integer eventid;
private String eventname;
public Tbauditevents(Integer eventid, String eventname) {
super();
this.eventid = eventid;
this.eventname = eventname;
}
public Tbauditevents() {
}
public Integer getEventid() {
return eventid;
}
public void setEventid(Integer eventid) {
this.eventid = eventid;
}
public String getEventname() {
return eventname;
}
public void setEventname(String eventname) {
this.eventname = eventname;
}
Using SELECT new
Query query = session.createQuery("SELECT new com.project.audit.forms.SampleForm(audittrail,auditevents) FROM Tbaudittrail audittrail,Tbauditevents auditevents WHERE auditevents.eventid=audittrail.audittrailid");
List<SampleForm> customList = query.list();
I got this error :
org.hibernate.PropertyNotFoundException: no appropriate constructor in class: com.project.audit.forms.SampleForm]
I've also tried using ResultTransformer but is not working.
Tbaudittrail and Tbauditevents are mapped while SampleForm is not. I'm using MS SQL SERVER.
Your problem is the
SampleFormconstructor. You will not receive aListin each parameter, but a single entity.So, the correct constructor is: