简体   繁体   English

休眠状态下同一实体中的计算列

[英]Calculated Column In Hibernate In same Entity

I have as entity class Student in that I have roll_no , student_name , marks columns My Entity Class below: 我有实体类Student,因为我具有roll_nostudent_name ,在下面marks我的实体类”列:

    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;
    }

    }

I want to execute A NamedQuery Like : 我想执行一个NamedQuery Like:

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

How can I add calculated new column final_result in my entity class. 如何在实体类中添加计算出的新列final_result I don't want to add it in my actual table in DB Thanks 我不想将其添加到数据库的实际表中

You don't need to bother the DB, make a getter: 您无需打扰数据库,做一个吸气剂:

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

EDIT: 编辑:

If you need finalResult to be an field for the json parser than try the following: 如果您需要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";
}

The @Transient annotation prevent the field from persisting and @PostLoad ensures the field is set after the Entity is loaded from jpa. @Transient批注防止字段持久存在,并且@PostLoad确保在从jpa加载Entity之后设置了该字段。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM