RE: Query using foreign objects

From: Dave Merrin (dmerri..pasystems.co.uk)
Date: Mon Feb 06 2006 - 12:00:39 EST

  • Next message: Andrus Adamchik: "Re: queries in TransactionDelegate spawn new connection"

    Hi,

    I've had a look through some more Cayenne documentation and some of the
    source code. I discovered CayenneDataObject validation. I see I can add my
    own validation but I don't just want to wipe out all of the cayenne
    validation by not calling the super implementation.

    I see in the Cayenne implementation the ObjAttributes are iterated through,
    getting the mapped DbAttribute and checking if the attribute is mandatory.
    Could an additional check be done at this point to check if the DbAttribute
    is generated before adding it to the failure list?

    Here is the code I am on about:

            Map failedDbAttributes = null;

            Iterator attributes = objEntity.getAttributes().iterator();
            while (attributes.hasNext()) {
                ObjAttribute objAttribute = (ObjAttribute) attributes.next();
                DbAttribute dbAttribute = objAttribute.getDbAttribute();

                Object value =
    this.readPropertyDirectly(objAttribute.getName());
                if (dbAttribute.isMandatory()) {
                    ValidationFailure failure =
    BeanValidationFailure.validateNotNull(
                            this,
                            objAttribute.getName(),
                            value);

                    if (failure != null) {

                        if (failedDbAttributes == null) {
                            failedDbAttributes = new HashMap();
                        }

                        failedDbAttributes.put(dbAttribute.getName(), failure);
                        continue;
                    }
                }

    Cheers,

    Dave
    > -----Original Message-----
    > From: Dave Merrin [mailto:dmerri..pasystems.co.uk]
    > Sent: 06 February 2006 09:04
    > To: cayenne-use..bjectstyle.org
    > Subject: Query using foreign objects
    >
    >
    > Hi,
    >
    > I have tried mapping an ObjEntity to to DBEntity to allow me to
    > use primary
    > keys in an expression. This works for the expression but creates a new
    > problem. My primary key is an identity hence it is generated by
    > the database
    > (and marked as isGenerated=true in the mapping file).
    > Unfortunately mapping
    > the ObjEntity to the DBEntity makes Cayenne think I have to set
    > primary key
    > when creating a new record in the database.
    >
    > Is this a bug?
    >
    > As an alternative I tried using the db: prefix but this didn't
    > seem to work
    > across relationships.
    >
    > Is there any way to create expressions using primary keys?
    >
    > Cheers,
    >
    > Dave
    >
    >



    This archive was generated by hypermail 2.0.0 : Mon Feb 06 2006 - 12:03:55 EST