cayenne-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Andrus Adamchik <>
Subject Re: Auto-creation of reverse relationships
Date Wed, 29 Feb 2012 07:41:52 GMT
The purpose of "runtime" relationships is to allow you to skip certain relationships from your
data model. E.g. artist.paintings is an explicit to-many, but there may be no painting.artist.
With runtime relationships there, adding a new painting to an artist would correctly update
painting ARTIST_ID on save.

In a default CayenneDataObject situation auto-reverse relationships should do no harm (such
as triggering fault fetches ... if they do, please report it, let's take a look). But generally
they are an implementation detail, and if we come up with an alternative and less invasive
algorithm to handle one-way relationships, I'll be happy to dump runtime rels.

Not using a "generic" object (CayenneDataObject) may cause an issue with runtime rels... Just
turn them off, but be aware of consequences for one-way to-many relationships as mentioned


On Feb 29, 2012, at 7:34 AM, John Huss wrote:
> My entity classes use explicit fields to store data instead of a Map, so
> when it tries to access the "runtimeRelationshipX" fields it blows up
> because these don't exist in the generated java classes.  I've dealt with
> it so far by just modeling all the relationships so that the fields are
> there to hold the data.  But now I'm using more introspection and having
> these unnecessary relationships is requiring workaround that I would prefer
> not to have.
> I did try turning this off today and thus far everything seems ok, but
> there is a lot more to test to be sure.
> On Tuesday, February 28, 2012, Michael Gentry wrote:
>> Hi John,
>> I don't know the answer to your question offhand, but what is the harm
>> that is being caused from your perspective (aside from extra logs on
>> startup)?
>> Thanks,
>> mrg
>> On Tue, Feb 28, 2012 at 5:45 PM, John Huss <<javascript:;>>
>> wrote:
>>> This comes from EntityResolver.applyDBLayerDefaults().  The commit where
>>> this was introduced (Revision 606720) says:
>>> "JPA: adding extra step - connecting reverse relationships on Cayenne end
>>> for consistent runtime..."
>>> So is it OK to turn this off?  Or will things blow up?
>>> Thanks,
>>> John
>>> On Wed, Feb 22, 2012 at 1:44 PM, John Huss <<javascript:;>>
>> wrote:
>>>> When I start up my Cayenne app, I see messages about it adding reverse
>>>> relationships in places where I have chosen not to define them in the
>>>> DataMap.  I'm wondering why it does this and if it is necessary and if
>> it
>>>> can be turned off.  Here is the message I'm talking about:
>>>> 2012-02-22 19:43:02 EntityResolver [INFO] added runtime complimentary
>>>> DbRelationship from Master to Detail
>>>> 2012-02-22 19:43:02 EntityResolver [INFO] added runtime complimentary
>>>> ObjRelationship from Master to Detail
>>>> Thanks,
>>>> John

View raw message