gpt4 book ai didi

java - 设置 CriteriaBuilder

转载 作者:行者123 更新时间:2023-12-02 13:15:13 25 4
gpt4 key购买 nike

我正在开发一个经常使用 CriteriaBuilder.Coalesce 的大型代码库。和 Root 。例如,

criteriaBuilder.coalesce(root.get('adjustedWeight'), root.get('weight'))

我不明白这个语法。其一,Coalesce API似乎只接受 1 个 Expression<? extends T> 类型的参数或T 。我也不明白 Root 是什么或者它为什么有用。

为了帮助我理解,我正在创建一个简化的示例,该示例使用上面的代码行以及 CriteriaBuilder 和 Root。我已经成功连接 Hibernate 和 JPA。

请记住,我有大约 3 天的 Java 编程经验。我的母语是 C#

import models.MyEntity;
import org.hibernate.jpa.HibernatePersistenceProvider;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.spi.PersistenceProvider;
import java.util.HashMap;
import java.util.List;


public class Main {
public static final String SELECT_QUERY = "from MyEntity where title = :title";

public static void main(String[] args) {
String title = "secureexam";
PersistenceProvider persistenceProvider = new HibernatePersistenceProvider();
EntityManagerFactory entityManagerFactory = persistenceProvider
.createEntityManagerFactory("NewPersistenceUnit", new HashMap());
EntityManager entityManager = entityManagerFactory.createEntityManager();
List<MyEntity> result = entityManager
.createQuery(SELECT_QUERY, MyEntity.class)
.setParameter("title", title)
.getResultList();

System.out.println("result is " + result.get(0).getTitle());
entityManager.close();
}
}

您能向我解释一下有关 criteriaBuilder 的第一行代码吗?另外,我如何修改我的代码以使用这行代码?

更新

凯文·彼得斯回答中提到的文章稍作修改即可:

    CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
CriteriaQuery<Entity> criteriaQuery = criteriaBuilder.createQuery(Entity.class);

//Test 1
Root<AssessmentEntity> rootTest1 = criteriaQuery.from(Entity.class);

换句话说,CriteriaBuilderCriteriaQuery必须以不同的方式实例化才能使构建正常工作。例如。整体CriteriaQuery<Entity class>语法对我来说没有意义。

最佳答案

您似乎获取了错误的 API 文档,正确的文档是 this 。 Coalesce 方法(如 SQL pendant )仅返回第一个非空值,因此如果该值不为空,则返回 adjustmentWeight 的值,否则返回weight 的值,或者如果没有任何值存在,则至少为 null。

您的情况中的 root 变量仅代表您正在处理的表,分别代表查询的根(SQL 查询翻译将是 ... FROM ... )。名字是任意的。 As database term this would be the selectionThis article也可以帮助你。

关于java - 设置 CriteriaBuilder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43816159/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com