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 above. Andrus 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 >> <[email protected]<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 >>> <[email protected]<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 >>>> >>
