-4
SEVERE: Local Exception Stack:
Exception [EclipseLink-7092] (Eclipse Persistence Services - 2.0.0.v20091127-r5931): 
            org.eclipse.persistence.exceptions.ValidationException
Exception Description: Cannot add a query whose types conflict with an existing query. 
    Query To Be Added: [ReadAllQuery(name="Voter.findAll" referenceClass=Voter 
    jpql="SELECT v FROM Voter v")] is named: [Voter.findAll] with arguments [[]].
    The existing conflicting query: [ReadAllQuery(name="Voter.findAll" referenceClass=
    Voter jpql="SELECT v FROM Voter v")] is named: [Voter.findAll] with arguments: [[]].
4

8 回答 8

3

我也遇到过这个问题,没有什么意义。我只有一个带有一个已定义查询的实体 bean,它继续告诉我这是问题所在。我停下来,然后启动 GF3,重新部署我的应用程序,我仍然得到它.. 更糟糕的是,我什至没有使用查询。

我不明白的一件事..为什么在 GF 中使用 EclipseLink?那是GF的一部分吗?我使用 Eclipse IDE,但我不从 Eclipse 中进行部署。我在命令行中从我的 ant 构建脚本进行部署。我猜 GF 一定是在使用一些 EclipseLink(以前是 TopLink?)。

上面的一个答案是确保没有过时的文件,取消部署应用程序等。如果已经弄清楚这一点的人可以提供更多详细信息并进行解释,那就太好了。如果它是另一个有错误的查询,那么如果显示错误而不是这个误导性的错误肯定会很好。

到目前为止,我已经停止了 GF,删除了所有表,重新启动,重新部署(在 autodeploy 文件夹中),但仍然立即得到这个问题。我通常会在短时间内多次构建/部署到自动部署文件夹,因为我会进行快速更改然后构建/重新部署。

于 2010-08-13T20:07:05.533 回答
2

我也遇到了这个问题,我发现异常与错误文件根本无关,问题来自另一个查询,例如:@NamedQuery(name = "ChannelType.ALL", query = "SELECT channelType FROM ChannelType channelType WHERE channelType.applicationClient.applicationClientId =:applicationClientId ORDER BY channelType.channelTypId ASC")

问题来自“ORDER BY channelType.channelTypId”,除了按主键排序,当我删除此行时,异常也消失了。

也许其他人可以解释为什么会发生这种情况。谢谢

于 2010-07-27T21:48:11.110 回答
2

仅针对仍在为该错误而苦苦挣扎的人们:

取消部署您的应用程序并检查是否还有任何陈旧(可能已锁定)的文件。这将导致旧的命名查询仍然存在,因此不会替换它们。

删除文件并重新部署。错误应该消失。

编辑:还要检查你是否没有做过类似WHERE o.object_id = :id......而不是WHERE o.object = :object......

这是我的问题的解决方案。我花了 3 周时间才弄清楚这一点。当涉及到异常时,EclipseLink 不是很清楚。实际上有一个查询编译错误。相反,它会引发重复的查询异常。

于 2010-06-08T08:51:35.110 回答
1

看起来您已经定义了两次查询。要么在同一个实体上,要么在另一个实体上,要么在orm.xml

于 2010-04-28T07:21:33.937 回答
0

错误也可能来自格式错误的命名查询,我有一个 where y o.activo -> 向我显示指定的错误。

于 2011-08-22T21:56:12.730 回答
0

我遇到了问题......真正的异常是@Named Query 格式错误,但堆栈跟踪只是说:

“异常描述:无法添加类型与现有查询冲突的查询”

我的解决方案:

在持久性单元中,将 Table Generation Strategy 更改为“None”,将 Validation Strategy 更改为“None”。再次运行时,我获得了真正的异常(格式错误的查询)。我解决了查询中的错误,返回到持久化单元中的旧配置,所有异常都消失了。

于 2012-05-23T18:01:30.700 回答
0

我快疯了,但至少,这不起作用:

@NamedQuery(name = "xyx", query = "SELECT count(v) FROM Classe v WHERE v.id =:_id);

这有效:

@NamedQuery(name = "xyx", query = "SELECT count(v) FROM Classe v WHERE v.id = :_id);

"WHERE v.id =:_id"是错误

于 2012-01-16T22:00:34.807 回答
0

由于您没有显示任何代码,因此不确定您在做什么,但这是 EclipseLink 文档中关于错误 ECLIPSELINK-07092 的说明:

ECLIPSELINK-07092:无法添加类型与现有查询冲突的查询。要添加的查询:[{0}] 命名为:[{1}],参数为 [{2}]。现有的冲突查询:[{3}] 命名为:[{4}],参数为:[{5 }]。
原因:EclipseLink 检测到具有相同名称的自定义查询和会话参数之间存在冲突。
行动:确保没有多次向会话添加查询或更改查询名称,以便可以将查询与其他查询区分开来。

根据上面的描述和跟踪,您似乎在会话中多次添加具有相同查询名称的查询(实际上是相同的)。您不应该(或使用其他查询名称)。

于 2010-04-28T07:21:32.213 回答