我有几个域类的描述符类。描述符类具有一个字段“
type”,该字段是一个枚举并指示域类的类型。在某些查询中,我想返回一个或多个描述符,并将类型作为构造函数参数传递。所以我的想法是将其作为查询参数传递:
String jpql = "SELECT NEW model.ModelDescriptor"
+ "(t.id, t.name, t.description, :modelType) ... ";
TypedQuery<ModelDescriptor> query = em.createQuery(jpql, ModelDescriptor.class);
query.setParameter("modelType", ModelType.forClass(clazz));
List<ModelDescriptor> list = query.getResultList();
这是行不通的。没有引发异常,但null
结果中包含类型。另外,也无法将枚举文字传递给查询:
"SELECT NEW model.ModelDescriptor (f.id, f.name, f.description,
model.ModelType.FLOW) ... "
编辑 我得到以下堆栈跟踪:
java.lang.IllegalArgumentException: An exception occurred while creating a query in
EntityManager:
Exception Description: Error compiling the query [SELECT model.ModelDescriptor(f.id,
f.name, f.description, model.ModelType.FLOW) FROM Flow f WHERE flow.id = :flowId],
line 1, column 78: unknown identification variable [model]. The FROM clause of the
query does not declare an identification variable [model].
at org.eclipse.persistence.internal.jpa.EntityManagerImpl.
createQuery(EntityManagerImpl.java:1477)
at org.eclipse.persistence.internal.jpa.EntityManagerImpl.
createQuery(EntityManagerImpl.java:1497)
我使用EclipseLink作为持久性框架。
有没有办法将枚举文字传递给SELECT NEW表达式?
不,没有,通常没有任何方法可以引用任何类中的字段,并且也无法将参数传递给SELECT子句。只有构造函数表达式的有效参数是(来自JPA
2.0规范,第174页)
问题内容: 我正在尝试在一个抽象类中创建一个抽象方法,该抽象类将自己的Enum作为参数。但是我也希望枚举是通用的。 所以我这样宣布: 在实现中,我列举了一个枚举: 并且方法声明变为: 但是,如果我这样做: 我无法访问并显示错误消息: 我做了这样的解决方法: 但是我想知道是否有可能无法通过我的解决方法? 问题答案: 在您的方法实现中,不是枚举,而是类型参数(通常称为)。因此,它掩盖了与已经说过的ax
每月,我想从我的一个集合中删除所有超过1个月的文档。集合中的示例文档如下所示: 我希望自动安排此任务的执行,这样它就不需要人工输入(例如,作为cron作业),因此我希望它具有尽可能少的逻辑。 如何查询createDate早于1个月的文档?我曾想过尝试这样的事情: 。。。其中,我创建了一个当前时间减去1个月毫秒的新ISODate,但它不会返回任何数据。这也有点难看,即使它确实有用。我将如何实现这一点
问题内容: 将SELECT查询放在UPDATE查询的WHERE子句中时出现错误。 我的查询是这样的: AND错误将显示如下: “无法在FROM子句中指定目标表’m’进行更新” 问题答案: 实际上,您可以通过将其包装在子查询中来更新它(从而为结果创建临时表) 或使用 JOIN
主要内容:find() 方法,pretty() 方法,findOne() 方法,条件查询,AND条件语句,OR 条件语句,AND 和 OR 联合使用前面我们介绍了怎么将文档插入到集合中,本节我们来介绍一下如何从集合中查询指定的文档。 find() 方法 想要查询集合中的文档,可以使用 MongoDB 中的 find() 方法,find() 方法可以将查询结果以非结构化的方式展示出来,其语法格式如下: db.collection_name.find(query, projection) 语法说明如
ES搜索中,可以通过GET /索引库名称/_doc/id查询文档,也可以通过 对文档进行查询 想问一下大佬们,这两者的区别是啥?都用在什么地方
我想在firestore数据库中查询文档id。目前我有以下代码: 我没有结果。但当我查询其他字段时,它会起作用: 文档id的名称是如何调用的?