Re: Select Query on Table with no Primary Key

From: Michael Gentry (blacknex..mail.com)
Date: Wed Jun 06 2007 - 11:27:24 EDT

  • Next message: Dave Merrin: "Re: Select Query on Table with no Primary Key"

    Cayenne needs PKs in order to do UPDATEs. If you aren't modifying the data,
    you might try fetching as data rows instead of CayenneDataObjects. I'm not
    certain if that would work, but has a much higher chance. Of course, you
    still won't be able to make a CayenneDataObject out of it.

    /dev/mrg

    On 6/6/07, Dave Merrin <dmerri..pasystems.co.uk> wrote:
    >
    > Hi,
    >
    > I'm trying to run a SelectQuery on a table with no primary key.
    > Unfortunately it's not working. Can anybody help? I have no control over
    > the database so I can't add in primary keys.
    >
    > Cheers,
    >
    > Dave
    >
    > INFO QueryLogger: SELECT t0.ID, t0.KIND, t0.TIMESTAMP FROM
    > MPS.STATETABLE_CPT t0
    > INFO QueryLogger: === returned 949 rows. - took 203 ms.
    > INFO QueryLogger: +++ transaction committed.
    > Exception in thread "main" org.apache.cayenne.CayenneRuntimeException:
    > [v.2.0.3 May 6 2007] Won't be able to create ObjectId for
    > 'StatetableCpt'. Reason: DbEntity 'STATETABLE_CPT' has no Primary Key
    > defined.
    > at
    > org.apache.cayenne.access.ObjectResolver.init(ObjectResolver.java:75)
    > at
    > org.apache.cayenne.access.ObjectResolver.<init>(ObjectResolver.java:57)
    > at
    > org.apache.cayenne.access.DataDomainQueryAction.interceptObjectConversion(
    > DataDomainQueryAction.java:319)
    > at
    > org.apache.cayenne.access.DataDomainQueryAction.execute(
    > DataDomainQueryAction.java:116)
    > at org.apache.cayenne.access.DataDomain.onQuery(DataDomain.java
    > :746)
    > at
    > org.apache.cayenne.util.ObjectContextQueryAction.runQuery(
    > ObjectContextQueryAction.java:217)
    > at
    > org.apache.cayenne.access.DataContextQueryAction.execute(
    > DataContextQueryAction.java:54)
    > at
    > org.apache.cayenne.access.DataContext.onQuery(DataContext.java:1387)
    > at
    > org.apache.cayenne.access.DataContext.performQuery(DataContext.java:1376)
    > at
    > ipa.printexpress.datahelpers.Session.fetchEntityCollection(Session.java
    > :158)
    > at
    > ipa.px.importer.abb.ABBImporterMain.main(ABBImporterMain.java:109)
    >



    This archive was generated by hypermail 2.0.0 : Wed Jun 06 2007 - 11:27:48 EDT