java - 规范中是否可以使用非实体字段?

标签 java jpa spring-data-jpa jpa-2.0

我有代码:

public class CustomFilter<T> implements Specification<EntityHE> {

    @Override
    public Predicate toPredicate(Root<EntityHE> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
        List<Predicate> predicates = new ArrayList<>();

        Predicate hasTenant = cb.equal(root.get("custom_field"), "value");
        predicates.add(hasTenant);

        return cb.and(predicates.toArray(new Predicate[predicates.size()]));
    }
}

@Entity(name = "entity")
@Table(name = "table")
public class EntityHE {

    @Getter @Setter
    @Column(name = "kind")
    private String kind;

    @Getter @Setter
    @Column(name = "modified")
    private Instant modified;

    public EntityHE(){};
}

我可能会出现调用错误,因为我的实体中没有字段“custom_field”。 是否可以按此规范进行过滤,而无需在我的实体中添加“custom_field”作为字段?

最佳答案

不,这是不可能的。因为该规范将在 JPA Criteria API 查询中使用,并且您只能查询映射的属性。

关于java - 规范中是否可以使用非实体字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54195505/

相关文章:

java - 如何在 Spring-data JPA 的名称中使用下划线 "_"映射类属性

java - JPA OneToMany 急切获取不起作用

spring-data-jpa - JpaRepository 的 Spring Data REST 自定义查找器

mysql - 单独序列表中的 JPA 主键

java - 在纯 JPA @Query 中传递 Enum 值有哪些方法?

java - 如何使用 Spring Security 以编程方式验证 `User` 并使用我的 `UserDetailsServie` 实现?

java - 代号 One MultiButton - 一个文本行中的两个操作按钮

java - 在网络应用程序中使用启动 spring 的最新方法

java - Spring Boot 1 数据库多数据库用户

java - 利用 UI 抽象