我正在为我的项目使用EclipseLink NoSQL。我遇到的一件奇怪的事情是,当使用本机查询“ db.collection.findOne()”时,一切运行正常,而“ db.collection.find()”则引发了异常。

这段代码有效:

Query emQuery = em.createNativeQuery("db.EMPLOYEE.findOne()", Employee.class);
List employees = emQuery.getResultList();


我有

[EL Fine]: 2014-07-16 11:55:05.78--ServerSession(1394835)--Connection(17102354)--Thread(Thread[main,5,main])--Executing QueryStringInteraction()
    spec => null
    query => db.EMPLOYEE.findOne()
    parameters => []
[EL Finest]: 2014-07-16 11:55:05.806--ServerSession(1394835)--Thread(Thread[main,5,main])--Adapter result: {RFID=12435, VERSION=1, _id=53B632034390846204F1A165, EMPLOYEEID=Smith, BADGENO=2487, ADDUPDATEDDATE=Fri Jul 04 12:48:03 SGT 2014, ADDUPDATEDBY=Alex, TYPE=MANAGER}




Query emQuery = em.createNativeQuery("db.EMPLOYEE.find()", Employee.class);
List employees = emQuery.getResultList();


还给我这个

[EL Fine]: 2014-07-16 11:59:26.688--ServerSession(2940862)--Connection(24410159)--Thread(Thread[main,5,main])--Executing QueryStringInteraction()
    spec => null
    query => db.EMPLOYEE.find()
    parameters => []
[EL Finest]: 2014-07-16 11:59:26.731--ServerSession(2940862)--Thread(Thread[main,5,main])--Adapter result: {value=DBQuery: testfloor.EMPLOYEE -> undefined}
Exception Description: The primary key read from the row [EISMappedRecord(
    value => DBQuery: testfloor.EMPLOYEE -> undefined)] during the execution of the query was detected to be null.  Primary keys must not contain null.
Query: ReadAllQuery(referenceClass=Employee )


有人知道这是怎么回事吗?

最佳答案

我在本机查询中使用find()方法时遇到了相同的错误,但我使用了一种解决方法,首先您必须使用本机查询和mongodb的聚合并将结果保存在一个临时集合中,然后可以对findAll使用简单的命名查询。使用此技术,您可以在mongodb中执行所有任意查询,并将结果发送到Java中的Session Bean

关于java - db.collection.find()在EclipseLink的 native 查询中不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24772017/

10-11 04:29
查看更多