2017-11-07 10 views
0

私は下にroll_nostudent_namemarks列私のエンティティクラスを持っているという点で、エンティティクラスの学生としている:
計算列

import javax.persistence.Entity; 
    import javax.persistence.Id; 
    import javax.persistence.Table; 


    @Entity 
    @Table(name = "student") 
    public class Student{ 

    @Id 
    private int roll_no; 
    private String student_name; 
    private int marks; 

    public int getRoll_no() { 
      return roll_no; 
     } 

     public void setRoll_no(int levelid) { 
      this.roll_no = roll_no; 
     } 

public String getStudent_name() { 
     return student_name; 
    } 

    public void setStudent_name(String student_name) { 
     this.student_name = student_name; 
    } 


public int getMarks() { 
     return marks; 
    } 

    public void setMarks(int marks) { 
     this.marks= marks; 
    } 

    } 

私はNamedQueryのように実行したい:

select *, (case when marks > 35 then 'Pass' else 'Fail' end) as final_result from student 

計算された新しい列final_resultをエンティティクラスに追加する方法を教えてください。 私はあなたがゲッターを行い、DBを気にする必要はありませんDBの私の実際のテーブルに おかげ

答えて

0

を、それを追加する必要はありません:

public String getFinalResult() { 
    return this.marks > 35 ? "Pass" : "Fail"; 
} 

はEDIT:

あなたの場合以下を試してみてくださいよりfinalResultは、JSONパーサーのフィールドである必要があります。

@Transient 
@JsonProperty(access = Access.READ_ONLY) 
private String finalResult; 

private int marks; 

public void setMarks(int marks) { 
    this.marks = marks; 
    setFinalResult(); 
} 

private String getFinalResult() { 
    return this.finalResult; 
} 

@PostLoad 
private void setFinalResult() { 
    this.finalResult = this.marks > 35 ? "Pass" : "Fail"; 
} 

@Transient注釈があちこちにフィールドを防ぎますmを維持し、@PostLoadは、エンティティがjpaからロードされた後でフィールドが確実に設定されます。

+0

私は上記のコードで試してみましたが、私の中に入れました。新しい計算値を得ることができません。私のHibernateコードは次のとおりです: 'Query GetStudent = session_hiber.getNamedNativeQuery(" Student.RollNo "); query.setInt(0、101); リスト student_row =(リスト)GetStudent.list(); ' ' session_hiber'は 'sessionFactory'です – ansh

+0

@ansh実際の問題は何ですか? student_rowは空ですか? getFinalResult()を呼び出すと、Studentがnullでない限り結果が得られます。 – Tom

+0

はい、私は結果を把握していますが、 'roll_no'、' student_name'と 'marks'しか得られませんでした。' final_result'という計算カラムではありません。私はjsonフォーマットでレスポンスを生成しています.-- { " 「roll_no」:101、 「student_name」:「Jon S」、 「marks」:67 } – ansh