My problem is I try to get values from 3 table joining. My mysql query is as follows. It works properly without any errors in sql console. But give errors when run using Java:
StringBuilder queryString = new StringBuilder();
queryString.append("SELECT cs.id, MIN( s.grade_level_val ) as minGrade, MAX( s.grade_level_val ) as maxGrade FROM class_section cs ")
.append("LEFT JOIN enrollment e ON e.class_section_id = cs.id ")
.append("LEFT JOIN student s ON s.id = e.student_id ")
.append("WHERE cs.id = :classSectionId");
TypedQuery<ClassSectionVO> query = (TypedQuery<ClassSectionVO>) entityManager.createNativeQuery(queryString.toString(), ClassSectionVO.class);
query.setParameter("classSectionId", classSectionId);
List<ClassSectionVO> result = query.getResultList();
And here is ClassSectionVO
:
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
@Entity
public class ClassSectionVO implements Serializable
{
private static final long serialVersionUID = 1L;
@Id
@Column(name = "id")
private Integer id;
@Column(name = "minGrade")
private Short minGrade;
@Column(name = "maxGrade")
private Short maxGrade;
public Integer getId()
{
return id;
}
public void setId(Integer id)
{
this.id = id;
}
public Short getMinGrade()
{
return minGrade;
}
public void setMinGrade(Short minGrade)
{
this.minGrade = minGrade;
}
public Short getMaxGrade()
{
return maxGrade;
}
public void setMaxGrade(Short maxGrade)
{
this.maxGrade = maxGrade;
}
}
There is no column max_grade
in the query but its gives me the error:
java.sql.SQLException :column 'max_grade' not found.