在HQL中使用瞬态字段

时间:2013-12-15 18:12:31

标签: java jpa hql

我有一个字段,它在运行时挂载,就像其他字段的连接一样。看:

public String getNumeroCip() {

        if (this.getId() == null) {
            return "BR0000000000000";
        }

        String idFormated = String.format("%011d", this.getId());
        return "BR" + idFormated + this.produto.getProduto().getSufixo();
    }

这是我的字段,在运行时安装。我可以称之为:bean.numeroCip。

但是如果我尝试在HQL中使用它,就像这样:

@NamedQuery(name = "Ar.findByNumeroArOrCip", query = "SELECT c FROM AR c "
                + "JOIN FETCH c.produto "
                + "JOIN FETCH c.situacao "
                + "WHERE c.numeroAr = :numeroAr OR c.numeroCip = :numeroCip")

当我尝试启动tomcat服务器时出现以下错误:

Caused by: org.hibernate.HibernateException: Errors in named queries: Ar.findByNumeroArOrCip

1 个答案:

答案 0 :(得分:3)

瞬态字段不能用于HQL查询。最后,HQL查询被转换为SQL查询,然后针对数据库执行。数据库不知道Java对象的字段。