Seems like you ought to be able to model this in cayenne without too much 
difficulty.

Main Entity -> Map relationship of value entities.  Each value entity has a 
to-one relationship to the attribute descriptor table.
One thing you might consider doing in your attribute descriptor table is to 
make the "type" be a java enum;  then you can add types to the system as needed 
with whatever behavior you need for the type (eg: explicit knowledge of how to 
convert the database value/type to the application/logical value/type).  
Alternatively, I've used cayenne's ability to supply custom types/custom type 
converters successfully in the past to do/help with this sort of thing.

You could overwrite readProperty in a base Persistent object to check first if 
the property in question is one of the  map properties; if so, read it instead, 
otherwise, pass handling back to cayenne.  Same goes for write.

Something along those lines...  it sounds like your use-case is probably simple 
enough that you could do this all with application-level code without having to 
hack cayenne.

Robert

On Aug 23, 2010, at 8/239:21 AM , Adrian Wiesmann wrote:

> Hi there
> 
> Has anybody ever tried to implement the Entity Attribute Value (EAV) model 
> [1] with the help of Cayenne.
> 
> Or do you have another idea how to model fully typified additional fields to 
> existing tables so that administrators can enhance their installation?
> 
> The idea behind this is that some companies have - as example - different 
> needs to describe their records or to group their assets. Now we could go the 
> simple way and just add a few (varchar) fields in the table here and there. 
> But these additional fields would neither be typified nor would they have 
> sounding names but something like field1, field2. Chaos guaranteed :)
> 
> Now I am looking for a way to allow an administrator to define which table 
> may have what additional fields. He should be required to define the type, 
> length.. of these additional fields. EAV sounds like the way to go, but I am 
> not sure about extending Cayenne for this.
> 
> Thanks for your input.
> 
> Cheers,
> Adrian
> 
> [1] http://en.wikipedia.org/wiki/Entity-attribute-value_model

Reply via email to