我正在为我的项目使用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/