java - 在 HQL 中使用 transient 字段

标签 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

最佳答案

临时字段不能在 HQL 查询中使用。最后,HQL 查询被转换为 SQL 查询,然后针对数据库执行。数据库不知道 Java 对象的字段。

关于java - 在 HQL 中使用 transient 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20597930/

相关文章:

spring-boot - 是否可以向 hibernate 发出信号以加载带有一组代理(不是惰性集)的 @ManytoMany 关联?

java - 以小时间隔命名的查询参数

mysql - 如何在 MySQL 中使用 Hibernate HQL 和 AVG-Function

java - Hibernate 允许 getdate() 吗?

java - 给定一个对象和一个 Class<?>,我可以判断该对象是否属于该类的子类型吗? (GWT,客户端)

java - 查找 JApplet 的宽度和高度

java - 使用 JPA native 查询和 MemSql 选择 json 列

java - 在 GAE 上检索/记录多个实体的最便宜的方法

java - 使用 websocket spring 初始化进行长轮询回退

java - 表面 View 示例