Discussion:
[Middlegen-user] EJB has many2many relationship with itself
Russell Black
2002-11-20 01:17:03 UTC
Permalink
Middlegen doesn't support this, but maybe CMR doesn't either...

I've got a person bean, and a manages table which defines the managers for a person.

CREATE TABLE person (
email varchar(256) PRIMARY KEY,
name varchar(256) NOT NULL,
);

CREATE TABLE manages (
manager varchar(256) NOT NULL,
target varchar(256) NOT NULL,
FOREIGN KEY (target) REFERENCES person ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (manager) REFERENCES person ON DELETE CASCADE ON UPDATE CASCADE
);

I realize it's weird for a person to have more than one manager, but it happens.. So I'd expect middlegen to produce the equivalent of a getManagers() method and a getDirectReports() method. Instead, it makes a methods called

public abstract java.util.Collection getPersons-by--target--manager();
public abstract void setPersons-by--target--manager(java.util.Collection persons-by--target--manager);

Which of course doesn't compile because of the hyphens. Is this type of thing even allowed by the CMR spec? It seems like a not-to-uncommon pattern. If CMR supports it, is there a way to get middlegen to do this? (Incidentally, middlegen does handle one-to-many relationships involving the same bean)

Russell

Loading...