Java 获取Hibernate中@Transient属性的非法状态异常

Java 获取Hibernate中@Transient属性的非法状态异常,java,hibernate,jpa,persist,transient,Java,Hibernate,Jpa,Persist,Transient,我在模型类中有一个属性是@transient属性,我使用了这个注释,因为我不希望它与数据库保持一致。但是在DaoImpl类中的查询中,我在select子句中使用了它。所以这给了我:java.lang.IllegalStateException:节点没有数据类型:org.hibernate.hql.internal.ast.tree.IdentNode 原因可能是什么?我不想删除@transient注释 public class Hello implements Serializable{

我在模型类中有一个属性是@transient属性,我使用了这个注释,因为我不希望它与数据库保持一致。但是在DaoImpl类中的查询中,我在select子句中使用了它。所以这给了我
:java.lang.IllegalStateException:节点没有数据类型:org.hibernate.hql.internal.ast.tree.IdentNode

原因可能是什么?我不想删除@transient注释

    public class Hello implements Serializable{
    @JsonIgnore
    private String new;

    @Transient
    @JsonIgnore
    private String wanted;

}
DaoImpl类中的查询

SELECT new,wanted from Hello

不能在查询中使用瞬态属性


transient的全部含义是DB不知道这个属性

transient意味着hibernate甚至不会尝试将它保存在DB中,因此如果它没有保存,那么它就不能在查询中使用。如果您检查db,您会发现没有为此字段输入值,它甚至不应该作为列存在。它只存在于代码中。

默认情况下,如果可能,类中的所有字段都将持久化到数据库中。如果有一个字段不应记录在数据库中,我们将用@Transient注释标记该字段。因此,数据不会被保存,这最终意味着无法获取数据


这就是我的意思

,但表中有该属性的列。我想获取该列,但不想在前端保存对该列所做的任何更改和更新,以反映在数据库中。在查询中不使用该属性的情况下,如何将其放到前端?这是您应该作为一个新问题提出的问题。作为提示:在询问之前检查
@Column(insertable=false,updateable=false)
,这与您所说的完全相反。瞬态不会保存在DB中。阅读文档。