Jpa …没有子类,因此返回时不检查数据存储

Jpa …没有子类,因此返回时不检查数据存储,jpa,datanucleus,entitymanager,Jpa,Datanucleus,Entitymanager,即使数据库中存在D1,调用em.find(Department.class,“D1”)也会返回null 调试日志将消息显示为: id的唯一候选对象是com.ge.dsp.iwork.entity.Department,并且没有子类,因此返回时不检查数据存储 这是什么意思?为什么返回空值 然后我试着使用 departmentId = emp.getDepartment().getDeptNo().trim(); Query query = em.c

即使数据库中存在D1,调用em.find(Department.class,“D1”)也会返回null

调试日志将消息显示为: id的唯一候选对象是com.ge.dsp.iwork.entity.Department,并且没有子类,因此返回时不检查数据存储

这是什么意思?为什么返回空值


然后我试着使用

            departmentId = emp.getDepartment().getDeptNo().trim();
            Query query = em.createQuery("SELECT d FROM Department d WHERE   
      trim(d.deptNo) = :departmentId");     
            query.setParameter("departmentId", departmentId);
注意:在传递到此处的参数之前,departmentId已被修剪

日志中打印的查询如下所示:

SELECT 'com.ge.dsp.iwork.entity.Department' AS  
NUCLEUS_TYPE,D.DEPTNAME,D.DEPTNO,D.LOCATION,D.MGRNO FROM DEPARTMENT D WHERE D.DEPTNO =  
<'D1'>
注意:在将departmentId设置为参数时,它现在再次被修剪

日志文件将查询显示为:

SELECT 'com.ge.dsp.iwork.entity.Department' AS NUCLEUS_TYPE,D.DEPTNAME,D.DEPTNO,D.LOCATION,D.MGRNO FROM DEPARTMENT D WHERE D.DEPTNO = 'D1'
并从数据库返回实体

为什么会这样?DataNucleus何时向参数添加尖括号

请指教

谢谢,

“不检查数据存储”意味着它知道要返回的对象的类型,因此不检查数据存储以验证该类型。为什么它返回null?因为您知道数据存储中的内容、日志中的内容以及该类是什么,所以只有您才能回答

尖括号表示JDBC语句的参数(因此在实数语句中为“?”)。这是日志记录,而不是数据存储

SELECT 'com.ge.dsp.iwork.entity.Department' AS NUCLEUS_TYPE,D.DEPTNAME,D.DEPTNO,D.LOCATION,D.MGRNO FROM DEPARTMENT D WHERE D.DEPTNO = 'D1'