Actually, Cayenne 3.x is pretty stable for the core features.
What I would do in your Product.java class (the subclass of
_Product.java) is to write a few custom methods. Something like:
public List<String> getKeywords()
{
List<String> keywords = new ArrayList<String>();
for (Keyword keyword : getKeywords())
keywords.add(keyword.getKeyword());
return keywords;
}
Your Keywords table/class could be rather complex and involved.
Cayenne normalizes the access to it, but you have the flexibility to
add custom accessors to make your application simpler and more natural
to develop.
mrg
On Wed, Aug 26, 2009 at 9:36 AM, Bret Gregory<bmg12..ahoo.com> wrote:
> Hey Matt,
>
> Thanks for the response. These are exactly the steps that I took. The problem that
> I am running into is that when I generate my classes the Product Class contains a List
> of Keyword.class not java.lang.String.
>
> I am guessing that since Cayenne 2.0.4 requires persistent classes to extend a base class
> that persisting simple classes/relationships like collections java.lang.String is not as simple.
> The big question is whether it is even possible.
>
> I have read a little on Cayenne 3.0 and it sounds like it is more inline, but the fact that it is not
> stable is a little disconcerting to me since I am writing something that will be in production before
> it is even gets into a release candidate stage.
>
> Any other ideas?
>
>
>
> ----- Original Message ----
> From: Matt Kerr <mat..entralparksoftware.com>
> To: use..ayenne.apache.org; Bret Gregory <bmg125@yahoo.com>
> Sent: Tuesday, August 25, 2009 10:55:15 PM
> Subject: Re: Newbie Question: Mapping a Collection of Strings
>
> Hey Bret -
>
> Unless I'm missing - yes, this is right on the mark for cayenne.
>
> If you have an existing database, the easiest is to create a new model
> and use Tools -> Re-engineer Databae Schema, ie
> http://cayenne.apache.org/doc/reverse-engineer-database.html
>
> Note- I find there a few quirks in the Modeler, so pay attention to
> the fine print like this,
> "... you need to select either a DataDomain or one of its children on
> the project tree."
>
> If you're starting from scratch - hmm, I'd thought there'd be more
> info here, but I'm not seeing it :-?
> http://cayenne.apache.org/doc/modeler-guide.html
>
> You'd need to do something *vaguely* like ..
>
> 1/ create a Database Entity for each of your tables: Product and
> Keyword. This includes defining PK.
> 2/ then still in the Database Entity - add the Relationship from
> Product -> Keyword. You have to open the Inspector (I) to define the
> columns which define the join. Set the name of reverse relationship
> -which will use the FK you mention.
> 3/ when that's all set, I'd hit the "C+" (Create Object Entity) to
> define your classes.
> 4/ Tools -> Generate Classes
>
> Hope this helps for now.
> -mk
>
>
>
> On Tue, Aug 25, 2009 at 10:08 PM, Bret Gregory<bmg12..ahoo.com> wrote:
>> I have a DB that looks something like this:
>>
>> Product
>> -ProductId
>> -Description
>>
>> Keyword
>> -ProductId
>> -Keyword
>>
>> Where Product -> Keyword is 1:N and Keyword has a FK rel back to Product.
>>
>> I would like the object model to look something like this:
>>
>> Product
>> -(String) _description
>> -(List<String>) _keywords
>>
>> Is it possible to map collections of simple objects and have them persisted by Cayenne? Seems like this would be a pretty common request, but
>> I am not seeing a way to do this in the modeler.
>>
>>
>>
>>
>
>
>
>
>
This archive was generated by hypermail 2.0.0 : Wed Aug 26 2009 - 09:48:48 EDT