Jpa 什么是CriteriaBuilder';的s literal()方法?

Jpa 什么是CriteriaBuilder';的s literal()方法?,jpa,criteria-api,Jpa,Criteria Api,文件说: 为文本创建表达式 在代码中我看到了cb.literal()的这种用法: 表达式wordLiteral=cb.literal(word); add(cb.like(namePath,wordLiteral)); 但如果在这里省略wordLiteral并使用word,则不会有任何变化。那么这个方法是做什么的呢?在类似的情况下,它是有效的,因为它确实有n个以字符串为参数的参数 还有其他几种谓词创建方法只接受表达式 为了以身作则,让我们举个例子。只有一个,它将Expression作为参数。如

文件说:

为文本创建表达式

在代码中我看到了cb.literal()的这种用法:

表达式wordLiteral=cb.literal(word);
add(cb.like(namePath,wordLiteral));

但如果在这里省略wordLiteral并使用word,则不会有任何变化。那么这个方法是做什么的呢?

在类似
的情况下,它是有效的,因为它确实有n个以字符串为参数的参数

还有其他几种谓词创建方法只接受表达式

为了以身作则,让我们举个例子。只有一个,它将
Expression
作为参数。如果我们有实体
User
和字段
account
,并且根据用户输入,我们必须找到其
account
具有相同长度的用户,可以按如下方式完成:

String accountInput = "Jack";

CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<User> cq = cb.createQuery(User.class);

Root<User> root = cq.from(User.class);

cq.select(root)
   .where(
        cb.equal(
            cb.length(root.get("account")),
            cb.length(cb.literal(accountInput))
        )
);
String accountInput=“Jack”;
CriteriaBuilder cb=em.getCriteriaBuilder();
CriteriaQuery cq=cb.createQuery(User.class);
Root=cq.from(User.class);
选择(根)
.在哪里(
cb.equal(
cb.length(root.get(“账户”)),
cb.length(cb.literal(accountInput))
)
);
String accountInput = "Jack";

CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<User> cq = cb.createQuery(User.class);

Root<User> root = cq.from(User.class);

cq.select(root)
   .where(
        cb.equal(
            cb.length(root.get("account")),
            cb.length(cb.literal(accountInput))
        )
);