Re: Select Query on Table with no Primary Key

From: Craig L Russell (Craig.Russel..un.COM)
Date: Wed Jun 06 2007 - 11:48:19 EDT

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

    I don't want to hijack this thread, but just point out that JPA does
    not support tables without primary key; JDO does (including updates)
    as an optional feature.

    Craig

    On Jun 6, 2007, at 8:41 AM, Dave Merrin wrote:

    > Sorry, I forgot to mention that I won't be updating the data. I
    > would like to move round the database using relationships though.
    >
    > Apart from changing the database are there any hacks I could try to
    > get round this problem.
    >
    > Cheers,
    >
    > Dave
    >
    > Michael Gentry wrote:
    >> 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.interceptObjectConve
    >>> rsion(
    >>> 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)
    >>>
    >>
    >

    Craig Russell
    Architect, Sun Java Enterprise System http://java.sun.com/products/jdo
    408 276-5638 mailto:Craig.Russel..un.com
    P.S. A good JDO? O, Gasp!





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