Re: Prefetched objects aren't used (2.0.4)

From: Donald Vrakking (d.vrakkin..si-solutions.nl)
Date: Thu Jul 09 2009 - 05:23:36 EDT

  • Next message: Andrus Adamchik: "Re: Prefetched objects aren't used (2.0.4)"

    There are to entities Supplier and Organisation. Both have a super
    entity SppSupplier and SppOrganisation, these are mapped to the
    tables. The query is done for Supplier(.class) and organisation is
    prefetched using toSppOrganisation.

            <db-entity name="SPP_SUPPLIER" schema="PRODUCTSUPPLIERUSER">
                    ...attribs...
                    <db-attribute name="ORGANISATION_ID" type="INTEGER" length="22"/>
                    <db-attribute name="SUPPLIER_ID" type="INTEGER" isPrimaryKey="true"
    isMandatory="true" length="22"/>
                    <db-key-generator>
                            <db-generator-type>ORACLE</db-generator-type>
                            <db-generator-name>seq_supplier</db-generator-name>
                            <db-key-cache-size>1</db-key-cache-size>
                    </db-key-generator>
            </db-entity>

            <db-entity name="SPP_ORGANISATION" schema="PRODUCTSUPPLIERUSER">
                    ...attribs...
                    <db-attribute name="ORGANISATION_ID" type="INTEGER"
    isPrimaryKey="true" isMandatory="true" length="22"/>
                    <db-key-generator>
                            <db-generator-type>ORACLE</db-generator-type>
                            <db-generator-name>seq_organisation</db-generator-name>
                            <db-key-cache-size>1</db-key-cache-size>
                    </db-key-generator>
            </db-entity>

            <db-relationship name="toSppOrganisation" source="SPP_SUPPLIER"
    target="SPP_ORGANISATION" toMany="false">
                    <db-attribute-pair source="ORGANISATION_ID" target="ORGANISATION_ID"/>
            </db-relationship>

            <obj-entity name="SppOrganisation"
    className="com.traserv.persist.productsupplier.SppOrganisation"
    dbEntityName="SPP_ORGANISATION"
    superClassName="com.traserv.persist.GenericDataObject">
                    ...attribs...
                    <obj-attribute name="name" type="java.lang.String" db-attribute-
    path="NAME"/>
            </obj-entity>

            <obj-entity name="Organisation" superEntityName="SppOrganisation"
    className="com.traserv.model.productsupplier.Organisation">
            </obj-entity>

            <obj-entity name="SppSupplier"
    className="com.traserv.persist.productsupplier.SppSupplier"
    dbEntityName="SPP_SUPPLIER"
    superClassName="com.traserv.persist.GenericDataObject">
                    ...attribs...
            </obj-entity>

            <obj-entity name="Supplier" superEntityName="SppSupplier"
    className="com.traserv.model.productsupplier.Supplier">
            </obj-entity>

            <obj-relationship name="toSppOrganisation" source="SppSupplier"
    target="SppOrganisation" db-relationship-path="toSppOrganisation"/>

    On 9 jul 2009, at 09:29, Andrus Adamchik wrote:

    > Very odd. This is as vanilla as it can get... Can you copy-paste the
    > relevant parts of the DataMap? I.e. Obj and Db entities definitions
    > for both entities and relationships definitions.
    >
    > Andrus
    >
    >
    > On Jul 9, 2009, at 10:20 AM, Donald Vrakking wrote:
    >> It's an n..1 relation; entity A has a foreign key to the PK of B.
    >> The "to dep pk" flag is not set.
    >>
    >> Donald
    >>
    >>
    >> On 9 jul 2009, at 08:59, Andrus Adamchik wrote:
    >>
    >>> Let's look at the details of mapping of this relationship. Is it
    >>> mapped as 1..1 or 1..N? If it is 1..1, is there a "to dep pk" flag
    >>> set
    >>> in one of the directions?
    >>>
    >>> Andrus
    >>>
    >>>
    >>> On Jul 8, 2009, at 12:43 PM, Donald Vrakking wrote:
    >>>
    >>>> Hi,
    >>>>
    >>>>
    >>>> I have two objects A and B which have an m:1 relation (it's used as
    >>>> a 1:1). I created a SelectQuery to get instances of A and added a
    >>>> prefetch to B. After executing the query, A only has a toOneFault
    >>>> for B, so when I access B it will execute another
    >>>> (relationship)query on the database.
    >>>>
    >>>> It doesn't matter if I use a DISJOINT or a JOINT prefetch, the
    >>>> result is the same; all the necessary queries are executed and the
    >>>> datarows for B are put in the cache, but the property on A isn't
    >>>> updated with the prefetched B. Does anybody know how to explain
    >>>> (and fix ;-)) this?
    >>>>
    >>>> Thanx,
    >>>>
    >>>> Donald Vrakking
    >>>>
    >>>
    >>
    >>
    >



    This archive was generated by hypermail 2.0.0 : Thu Jul 09 2009 - 05:25:21 EDT