SQL Error: 1054, SQLState: 42S22

Course Queries Syllabus Queries 3 years ago

253 3 0 0 0

User submissions are the sole responsibility of contributors, with TuteeHUB disclaiming liability for accuracy, copyrights, or consequences of use; content is for informational purposes only and not professional advice.

Answers (3)

Post Answer
profilepic.png
manpreet Tuteehub forum best answer Best Answer 3 years ago

 

Hello Everyone I'm trying to retrive some data from my database but I'm getting

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'subject_id' in 'where clause'

It works if I retrive some other column of same table. I'm using spring and hibernate

Here is my controller code

@RequestMapping(value = "/getAnyQuestion", method = RequestMethod.GET)
public @ResponseBody
String getAnyQuestion(
        @RequestParam(value = "subId", required = true) Long subId,
        @RequestParam(value = "questionType", required = true) String questionType) {

    Question questionList = questionService.getAnyQuestion(subId,questionType);

    if (questionList != null) {
        questionId = questionList.getId();
        return questionList.getQuestionText();
    }

    return "";
}

Here is my Service

 public Question getAnyQuestion(Long subId,String questionType) {             
    String query = "subject_id = " + subId +"  and "+ "questionType='" + questionType +"' and 1=1 order by rand()";       

    List<Question> questionList = hibernateTemplate.findByCriteria(DetachedCriteria.forClass(Question.class).add(Restrictions.sqlRestriction(query)),0,1);
    if (questionList.isEmpty()) {
        return null;
    }
    return questionList.get(0);
}

and here is my domain

@Entity

@Table(name = "question") public class Question {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column(length = 50)
private String questionType;
@Column(length = 5000)
private String questionText;

@ManyToOne
private Syllabus syllabus;
@ManyToOne
private Subject subject;
@ManyToOne
private Roll roll;

public Long getId() {
    
                                                
0 views
0 shares

profilepic.png
manpreet 3 years ago

Disambiguate column_id in your WHERE clause:

where subject_id = 1  and questionType='University' and 1=1 order by rand() limit ?

I guess it is caused by this line of code:

String query = "subject_id = " + subId +"  and "+ "questionType='" + questionType +"' and 1=1 order by rand()";       

It should be something like

String query = "this_.subject_id = " + subId +"  and "+ "this_.questionType='" + questionType +"' and 1=1 order by rand()";

0 views   0 shares

profilepic.png
manpreet 3 years ago

Even I was facing this issue. The cause for this happened due to a TRIGGER created on a table was scripted wrong. I was referring to wrong column name/wrong table causing SQL Error: 1054, SQLState: 42S22


0 views   0 shares

No matter what stage you're at in your education or career, TuteeHUB will help you reach the next level that you're aiming for. Simply,Choose a subject/topic and get started in self-paced practice sessions to improve your knowledge and scores.

Similar Forum