cayenne-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Mike Kienenberger" <mkien...@gmail.com>
Subject Re: Get the number of FKs
Date Thu, 06 Mar 2008 20:31:12 GMT
Michael, just to clarify, he doesn't want to work with Employees.  He
wants to work with Departments.  Scott wants to know how to do this
without pulling in the Employee records.

On 3/6/08, Michael Gentry <blacknext@gmail.com> wrote:
> If it is mandatory, it sounds like these records were created outside
>  of Cayenne (they are legacy, testing, etc records)?  If that is the
>  case, the easiest thing to do is to just issue an SQL command directly
>  to the database (using whatever normal SQL command you use).
>  Something like:
>
>  delete from employee where departmentFK is null;
>
>  If it is something that is happening regularly, though, and you want
>  to be able to nuke them from within your Cayenne application, you can
>  issue raw SQL to do the trick, too:
>
>  DataContext dataContext = DataContext.createDataContext();
>  SQLTemplate sqlQuery = new SQLTemplate(Customer.class, "delete from
>  employee where departmentFK is null");
>  dataContext.performNonSelectingQuery(sqlQuery);
>
>  With this code, though, be careful that you don't have any of those
>  dangling employees in memory, as this totally bypasses the Cayenne
>  object graph.
>
>  /dev/mrg
>
>
>
>  On Thu, Mar 6, 2008 at 3:19 PM, Scott Anderson <sanderson@airvana.com> wrote:
>  > Employee.Department is mandatory; I want to search for and delete rogue
>  >  departments.
>  >
>  >
>  >
>  >  -----Original Message-----
>  >  From: Michael Gentry [mailto:blacknext@gmail.com]
>  >  Sent: Thursday, March 06, 2008 2:08 PM
>  >  To: user@cayenne.apache.org
>  >  Subject: Re: Get the number of FKs
>  >
>  >  It seems you mainly want a list of employees who are not in a
>  >  department, so doing a fetch on Employee where "department = null"
>  >  might work (I'm not positive I've ever tried this, but it seems logical
>  >  to me).
>  >
>  >  /dev/mrg
>  >
>  >  On Thu, Mar 6, 2008 at 1:58 PM, Scott Anderson <sanderson@airvana.com>
>  >  wrote:
>  >  > I've got a one-to-many relationship (employees belong to a
>  >  > department),  and I'd like to search for departments that have no
>  >  employees.
>  >  >  Currently, I have something like:
>  >  >
>  >  >  foreach(dept : departments) {
>  >  >     if(dept.getEmployees().size() == 0)
>  >  >         context.deleteObject(dept);
>  >  >  }
>  >  >
>  >  >  When I do this, it has the effect of telling Cayenne to fetch data
>  >  > rows  for every employee in the database; this will not scale well. Is
>  >
>  >  > there  any way I can get the size of the array without doing a custom
>  >  > SELECT  query?
>  >  >
>  >
>

Mime
View raw message