Java 在netbeans中使用JPA将数据插入数据时出现异常

Java 在netbeans中使用JPA将数据插入数据时出现异常,java,orm,netbeans,jpa,eclipselink,Java,Orm,Netbeans,Jpa,Eclipselink,因为没有显示任何代码,所以不确定您到底在做什么,但这是EclipseLink文档中关于错误EclipseLink-07092的说明: ECLIPSELINK-07092:无法添加类型与 现有查询。要添加的查询: [{0}]的名称为:[{1}],并带有参数 [{2}]。现有的冲突查询: [{3}]的名称为:[{4}],参数为: [{5}]. 原因:EclipseLink检测到自定义项之间存在冲突 具有相同名称和参数的查询 到会话。 操作:确保不会向会话中多次添加查询 或者更改查询名称,以便 查询可

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

ECLIPSELINK-07092:无法添加类型与 现有查询。要添加的查询: [{0}]的名称为:[{1}],并带有参数 [{2}]。现有的冲突查询: [{3}]的名称为:[{4}],参数为: [{5}].
原因:EclipseLink检测到自定义项之间存在冲突 具有相同名称和参数的查询 到会话。
操作:确保不会向会话中多次添加查询 或者更改查询名称,以便 查询可以与 其他的


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

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

中,仅针对仍在努力解决此错误的人员:

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

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

编辑: 还要检查你是否做过类似于<代码>其中o.object_id=:id。。。而不是<代码>其中o.object=:object


这是解决我问题的办法。我花了三个星期才弄明白。当涉及到异常时,食线不是很清楚。实际上有一个查询编译错误。相反,它会抛出一个重复的查询异常。

我也遇到了这个问题,我发现异常与错误文件根本不相关,问题来自另一个查询,例如: @NamedQuery(name=“ChannelType.ALL”,query=“从ChannelType ChannelType中选择ChannelType,其中ChannelType.applicationClient.applicationClientId=:applicationClientId ORDER BY ChannelType.channelTypId ASC”)

问题是“orderbychanneltype.channeltyped”不是按主键排序的例外,当我删除这一行时,异常也消失了

也许其他人可以解释为什么会这样。
谢谢

我也遇到过这个问题,它没有什么意义。我只有一个实体bean和一个已定义的查询,它继续告诉我这就是问题所在。我做了一个停止,然后开始GF3,重新部署我的应用程序,我仍然得到它。。更糟糕的是,我甚至没有使用查询

有一件事我不明白。。为什么在GF中使用EclipseLink?这是GF的一部分吗?我使用EclipseIDE,但我不从Eclipse内部部署。。我从命令行的ant构建脚本部署。我猜GF一定是在使用EclipseLink(曾经是TopLink?)

上面提到的一个答案是确保没有过时的文件,取消部署应用程序等。如果有人能够提供更多细节并加以解释,那就太好了。如果是另一个查询中有错误,那么如果显示的是错误,而不是这个误导性的查询,那就太好了


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

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

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

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: [[]].
这项工作:

@NamedQuery(name = "xyx", query = "SELECT count(v) FROM Classe v WHERE v.id =:_id);
“其中v.id=:_id”
是错误

我有问题。。。 真正的例外是@Named查询格式错误,但stacktrace只是说:

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

我的解决方案:


在持久化单元中,将表生成策略更改为“无”,将验证策略更改为“无”。当再次运行时,我获得了真正的异常(格式错误的查询)。我解决了查询中的错误,返回到持久化单元中的旧配置,所有异常都消失了

嗨,我也有同样的问题,你知道Glassfishv3上的陈旧文件在哪里吗?好的。。该死,如果我寄得太早了。我发现了我的问题。令人遗憾的是,这确实是一种误导。我的一个实体中有一个错误的查询。一个完全不同的班级。不知道为什么它说问题出在另一个实体身上。不管怎样,我终于解决了我的查询问题,重新部署了,并且成功了。不幸的是,对我来说,这个错误是因为定义的NamedQuery的语法不正确。希望这能帮助别人。确保检查所有实体及其命名查询。。它们的语法。尝试注释掉所有这些,然后一个接一个地让它们进入,直到找到导致误导性堆栈跟踪的那个。
@NamedQuery(name = "xyx", query = "SELECT count(v) FROM Classe v WHERE v.id = :_id);