我做了一个简单的java web, 利用了JPA。
我对一个视图做了jpa reverse工程。
之后我在action对他进行查询,查询语句是:
rs=dao.findAll();
系统报错:
[TopLink Warning]: 2011.06.16 10:57:32.078--UnitOfWork(31709196)--Exception [TOPLINK-6044] (Oracle TopLink Essentials - 2.0 (Build b40-rc (03/21/2007))): oracle.toplink.essentials.exceptions.QueryException
Exception Description: The primary key read from the row [DatabaseRecord(
中间这显示的是表的数据
YKMES.AQC0010C_REF.GRIND_POS => null)] during the execution of the query was detected to be null.  Primary keys must not contain null.
Query: ReportQuery(views.Aqc0010cRef)。
为了找到问题,我又对一个没有主键的表做jpa reverse,同样做rs=dao.findAll();
操作,没问题呢。
请高手指点。
难倒是视图不能进行jpa reverse?

解决方案 »

  1.   

    好简单的问题,到我这变复杂啦,块烦死啦。
    有一个表,只有一个字段,我想查出来,然后再显示,通过调试,能查询出来,利用网上的代码,就是不能显示,好郁闷!有人救救我吗?
    代码如下:
    package action;import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;import javax.persistence.EntityManager;
    import javax.persistence.Query;import entities.EntityManagerHelper;
    import entities.IdbqcPface;public class MutilTablesQuery {
    private static List aqc0010c_s=new ArrayList();
    private static EntityManager getEntityManager() {
    return EntityManagerHelper.getEntityManager();
    }
    MutilTablesQuery(){

    }

    public  String  getRS()throws Exception{
    String sqlstr=" select aa";
    sqlstr+=" from IdbqcPface aa where aa.plateId like '20091230%'  ";

    Query query=getEntityManager().createQuery(sqlstr);
    aqc0010c_s=query.getResultList();
    System.out.println(aqc0010c_s.size());
    Iterator iterator1 = aqc0010c_s.iterator();  
    System.out.println("has read datas!");
    while (iterator1.hasNext()) {   
    System.out.println("has began to loop!");
    Object[] obj =  (Object[]) iterator1.next();
    //Object[] obj = (Object[]) iterator1.next(); 
    System.out.println("has began to loop2!");
    IdbqcPface IdbqcPface_t = (IdbqcPface)obj[0];
    System.out.println(IdbqcPface_t.getPlateId());
    }  

    return "success";
    } /**
     * @param args
     * @throws Exception 
     */
    public static void main(String[] args) throws Exception {
    MutilTablesQuery x= new MutilTablesQuery();
    String s=x.getRS(); }}
    通过跟踪调试,发现就是Object[] obj =  (Object[]) iterator1.next();
    过不去,哭啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊!