cayenne-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Michael Gentry <blackn...@gmail.com>
Subject Re: Tracking down a Runtime Relationship - Cayenne 3.1
Date Thu, 17 Mar 2016 14:52:10 GMT
Hi Frank,

You can try adding/calling this to print them:

import org.apache.cayenne.map.DbEntity;
import org.apache.cayenne.map.DbJoin;
import org.apache.cayenne.map.DbRelationship;

...

    public static void dumpRuntimeRelationships(ObjectContext objectContext)
    {
        for (DbEntity entity :
objectContext.getEntityResolver().getDbEntities())
        {
            StringBuilder builder = new StringBuilder();

            for (DbRelationship relationship : entity.getRelationships())
            {
                if
(relationship.getName().startsWith("runtimeRelationship"))
                {
                    builder.append("    Name: ");
                    builder.append(relationship.getName());
                    builder.append(", Source: ");

builder.append(relationship.getSourceEntity().getName());
                    builder.append(", Target: ");

builder.append(relationship.getTargetEntity().getName());
                    builder.append(", Joins: ");

                    for (DbJoin join : relationship.getJoins())
                    {
                        builder.append(join.getSourceName());
                        builder.append(" : ");
                        builder.append(join.getTargetName());
                    }

                    builder.append("\n");
                }
            }

            if (builder.length() > 0)
            {
                builder.insert(0, "\n");
                builder.insert(0, entity.getName());
                builder.insert(0, "\nEntity: ");

                System.out.println(builder);
            }
        }
    }


Example output:

Entity: s_budget_years
    Name: runtimeRelationship18, Source: s_budget_years, Target:
p_line_items, Joins: pk : delta_quantity_fk
    Name: runtimeRelationship19, Source: s_budget_years, Target:
p_line_items, Joins: pk : delta_total_cost_fk



mrg

PS. The "source" info is a bit redundant, but will copy/paste well if you
need to send to someone.



On Thu, Mar 17, 2016 at 10:17 AM, Frank Herrmann <
frank.herrmann@modernizingmedicine.com> wrote:

> Thanks everyone. We were able to pepper some temporary logging in the code
> and figure out the relationship. I appreciate all the quick responses.
>
> -Frank
>
> On Thu, Mar 17, 2016 at 10:12 AM, Michael Gentry <blacknext@gmail.com>
> wrote:
>
> > Hi Jurgen,
> >
> > Maybe you are seeing something different than me?  When I have logging
> > turned on, I see things like:
> >
> > org.apache.cayenne.map.EntityResolver added runtime complimentary
> > DbRelationship from s_budget_years to p_line_items
> > ...
> > org.apache.cayenne.map.EntityResolver added runtime complimentary
> > ObjRelationship from BudgetYears to LineItem
> >
> > It doesn't specify the relationship name, though.
> >
> > mrg
> >
> >
> > On Thu, Mar 17, 2016 at 9:30 AM, <dollj@xsinet.co.za> wrote:
> >
> > >
> > >
> > > Hi Frank
> > >
> > > Cayenne logs the runtime relationships it generates when it loads the
> > > model into memory.
> > >
> > > So if you look in the log which it also sends to System.err and search
> > > for "runtimeRelationship725" then you will be able to see which entity
> > > it's associated with. At least then he'll have a clue as where to begin
> > > looking.
> > >
> > > Regards
> > >
> > > Jurgen
> > >
> > > On 2016-03-17 15:02, Frank Herrmann wrote:
> > >
> > > > Thanks. I passed this along to the developer. We are using version
> 3.1.
> > > >
> > > > On Wed, Mar 16, 2016 at 6:29 PM, Michael Gentry <
> mgentry@masslight.net
> > >
> > > > wrote:
> > > > Hi Frank, I don't have any handy code to do this at the moment, but
> the
> > > approach I would take is to write a utility method to dump the model's
> > > source/destination relationship information immediately after loading
> the
> > > model into memory. Then, when you get the validation exception, you can
> > > reference that data dump for assistance. mrg PS. What version of
> Cayenne?
> > > On Wed, Mar 16, 2016 at 3:12 PM, Frank Herrmann <
> > > frank.herrmann@modernizingmedicine.com> wrote: Hello all, We have a
> > > developer here that recently asked for my help and told him I'd reach
> > out.
> > > He is getting a validation failure error on a runtime relationship
> > > (specifically runtimeRelationship725). As these are created during
> > runtime,
> > > he is setting a break point in the code at the commit to try and figure
> > out
> > > what object this runtime relationship is attached to. My question is,
> is
> > > there an easy way to pinpoint what object this relationship is attached
> > to,
> > > or what relationship it is reversing so he can troubleshoot the
> > > validation error? Thanks, -Frank -- FRANK HERRMANN SOFTWARE ENGINEER T:
> > 561-880-2998
> > > x1563 E: frank.herrmann@modmed.com [image: [ Modernizing Medicine ]] <
> > > http://www.modmed.com/ [1]> [image: [ Facebook ]] <
> > > http://www.facebook.com/modernizingmedicine [2]> [image: [ LinkedIn
> ]] <
> > > http://www.linkedin.com/company/modernizing-medicine/ [3]> [image: [
> > > YouTube ]] <http://www.youtube.com/user/modernizingmedicine [4]>
> [image:
> > > [ Twitter ]] <https://twitter.com/modmed_EMA [5]> [image: [ Blog ]] <
> > > http://www.modmed.com/BlogBeyondEMR [6]> [image: [ Instagram ]] <
> > > http://instagram.com/modernizing_medicine [7]>
> > >
> > > --
> > > FRANK HERRMANN
> > > SOFTWARE ENGINEER
> > >
> > > T: 561-880-2998 x1563
> > >
> > > E: frank.herrmann@modmed.com
> > >
> > > [image: [ Modernizing Medicine ]] <http://www.modmed.com/ [1]>
> > > [image: [ Facebook ]] <http://www.facebook.com/modernizingmedicine
> [2]>
> > > [image:
> > > [ LinkedIn ]] <http://www.linkedin.com/company/modernizing-medicine/
> > > [3]> [image:
> > > [ YouTube ]] <http://www.youtube.com/user/modernizingmedicine [4]>
> > > [image: [
> > > Twitter ]] <https://twitter.com/modmed_EMA [5]> [image: [ Blog ]]
> > > <http://www.modmed.com/BlogBeyondEMR [6]> [image: [ Instagram ]]
> > > <http://instagram.com/modernizing_medicine [7]>
> > >
> > >
> > >
> > > Links:
> > > ------
> > > [1] http://www.modmed.com/
> > > [2] http://www.facebook.com/modernizingmedicine
> > > [3] http://www.linkedin.com/company/modernizing-medicine/
> > > [4] http://www.youtube.com/user/modernizingmedicine
> > > [5] https://twitter.com/modmed_EMA
> > > [6] http://www.modmed.com/BlogBeyondEMR
> > > [7] http://instagram.com/modernizing_medicine
> > >
> >
>
>
>
> --
> FRANK HERRMANN
> SOFTWARE ENGINEER
>
> T: 561-880-2998 x1563
>
> E: frank.herrmann@modmed.com
>
>
>
> [image: [ Modernizing Medicine ]] <http://www.modmed.com/>
> [image: [ Facebook ]] <http://www.facebook.com/modernizingmedicine>
> [image:
> [ LinkedIn ]] <http://www.linkedin.com/company/modernizing-medicine/>
> [image:
> [ YouTube ]] <http://www.youtube.com/user/modernizingmedicine> [image: [
> Twitter ]] <https://twitter.com/modmed_EMA> [image: [ Blog ]]
> <http://www.modmed.com/BlogBeyondEMR> [image: [ Instagram ]]
> <http://instagram.com/modernizing_medicine>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message