Against a MySQL DB, I can use MySQL-generated keys and the Cayenne
AUTO_PK_SUPPORT table at the same time (different entities, of
course). Like I said earlier, perhaps if NO entities use the
AUTO_PK_SUPPORT keys, we might could hide the checkbox for the
AUTO_PK_SUPPORT schema generation, but I'm not 100% convinced of that
argument yet.
Thanks,
mrg
On Wed, Apr 21, 2010 at 12:27 AM, Robert Zeigler
<robert.zeigle..oxanemy.com> wrote:
> Sure... I can understand that.
> But if you're generating against a db that supports db-generated keys, and
> you have an entity that requests db-generated keys, then it seems like
> there's no reason to include the row for that entity in the auto_pk_support
> table, other than the fact that having it there doesn't do any harm (except
> confuse new users :), but keeps the codebase for the schema generation a
> little cleaner. It smells like an oversight, but I'm not sure that it is,
> so I was curious. :)
>
> Robert
>
> On Apr 20, 2010, at 4/204:09 PM , Michael Gentry wrote:
>
>> "I'm actually curious to know the rationale behind that one, myself."
>>
>> In the beginning ... OK, I'm speculating here because I wasn't around
>> in the beginning ... I believe Cayenne ONLY supported the
>> AUTO_PK_SUPPORT, although maybe Oracle sequences were there early on.
>> Over time, DB-generated key support was added (sometime in 2.x, I
>> think) and also PostgreSQL sequences. It is also the only method that
>> is going to work on all DBs.
>>
>> mrg
>>
>>
>> On Tue, Apr 20, 2010 at 5:01 PM, Robert Zeigler
>> <robert.zeigle..oxanemy.com> wrote:
>>>
>>> I can understand Joe's confusion: not only does cayenne generate the
>>> AUTO_PK_SUPPORT table, but it also inserts a row for each table,
>>> regardless
>>> of whether that table is using cayenne vs. db-generated ids.
>>> I'm actually curious to know the rationale behind that one, myself. :) I
>>> mean, I know cayenne will fall back to using cayenne-generated ids if the
>>> db
>>> connected to (or corresponding driver) doesn't support auto-pk
>>> generation.
>>> But you should be able to detect that at schema generation time, and you
>>> have the mapping in hand to determine which entities will use
>>> db-generated
>>> pks... so... at the very least, shouldn't you only insert a row for those
>>> entities which need it?
>>>
>>> The flip side, though, is that having an unused row in the db will have
>>> virtually no performance impact, and it keeps the generation code much
>>> simpler. *shrug* Just thinking out loud, I guess... I'd love to hear the
>>> original rationale for including all entities in the table, regardless of
>>> what their pk-generation strategy is. :)
>>>
>>> Robert
>>>
>>> On Apr 20, 2010, at 4/203:43 PM , Michael Gentry wrote:
>>>
>>>> Hi Joe,
>>>>
>>>> On Tue, Apr 20, 2010 at 1:12 PM, Joe Baldwin <jfbaldwi..arthlink.net>
>>>> wrote:
>>>>>
>>>>> Michael,
>>>>>
>>>>>> However, I would suggest not doing both strategies on the same table
>>>>>> as
>>>>>> it will probably bite you in the long run somehow.
>>>>>
>>>>> That is not my intention (but I agree with you). I am verifying all of
>>>>> my entities right now. However, the Cayenne Modeler configuration was
>>>>> not
>>>>> clear. You said that if I set the "PK Generation Strategy" to
>>>>> "Database
>>>>> Generated" but then I unintentionally had the "Create Primary Key
>>>>> Support"
>>>>> checked in the "Generate DB Schema" Options dialog, then it would
>>>>> create the
>>>>> AUTO_PK_SUPPORT table.
>>>>>
>>>>> It is not clear to me why you have this in two separate config
>>>>> parameters. Base on your explanation (in the previous email), that if
>>>>> you
>>>>> select the "PK Generation Strategy" type for the individual entities,
>>>>> then
>>>>> the "Create Primary Key Support" option should be automatically
>>>>> configured
>>>>> at that time.
>>>>>
>>>>> Said a different way: why would the Cayenne Modeler create
>>>>> Cayenne-Managed Primary Key Support for tables with the "PK Generation
>>>>> Strategy" to "Database Generated"?
>>>>
>>>>
>>>> I think you are confusing Cayenne Modeler's schema generation feature
>>>> with Cayenne's runtime primary key support feature. More below.
>>>>
>>>>
>>>>> I may be wrong, but base on what you had described, it seems like
>>>>> Cayenne
>>>>> Modeler is creating a conflicting configuration in this scenario.
>>>>
>>>>
>>>> There is no conflict. Perhaps if you don't use "Database Generated"
>>>> on any DbEntities then it would be safe in Cayenne Modeler to not have
>>>> the checkbox when generating the SQL to create the AUTO_PK_SUPPORT
>>>> table, but I'm not even sure I agree with that idea. Keep in mind
>>>> that each table can have different PK generation options (even though
>>>> it would potentially be confusing). Cayenne doesn't stop you from
>>>> using the AUTO_PK_SUPPORT on some entities even when you are using
>>>> MySQL's auto-generated PK on other entities (for example, you may need
>>>> higher performance on some tables for bulk inserts). Cayenne will use
>>>> whichever strategy you specify for the entity, but allows you to
>>>> create the AUTO_PK_SUPPORT if it is needed (your call) when you
>>>> generate the SQL.
>>>>
>>>>
>>>>>> If you have Cayenne generating the keys, it'll push them to MySQL.
>>>>>
>>>>> I agree, but I have clearly set "PK Generation Strategy" to "Database
>>>>> Generated". So my question remains: given that the CM allows
>>>>> conflicting
>>>>> parameters, which one takes precedence here? I have set "PK Generation
>>>>> Strategy" to "Database Generated", are you saying that Cayenne then
>>>>> ignores
>>>>> this configuration?
>>>>>
>>>>>
>>>>>> However, I would suggest not doing both strategies on the same table
>>>>>> as
>>>>>> it will probably bite you in the long run somehow.
>>>>>
>>>>>
>>>>> I agree. That is *definitely* not my intention, (But as I described
>>>>> above, it appears that this is very easy to do with CayenneModeler.)
>>>>>
>>>>> Michael, what you have described concerning CM is not intuitive. I
>>>>> could
>>>>> easily see a designer configuring one table with Cayenne-Managed
>>>>> auto-generation, and another with database-auto-generation (because
>>>>> Cayenne
>>>>> Modeler allows it). If what you are saying is true, then selecting the
>>>>> "Create Primary Key Support" checkbox, will override they
>>>>> "database-auto-generation" parameter.
>>>>
>>>>
>>>> That's actually not at all what I am saying. Selecting the "Create
>>>> Primary Key Support" checkbox in Cayenne Modeler's schema generation
>>>> tool just creates it in the schema. It doesn't override what you set
>>>> for each individual entity. Whomever is doing the design needs to
>>>> decide how the PKs are generated on each table. In a lot of
>>>> applications it is the same method for all entities, but it doesn't
>>>> have to be that way.
>>>>
>>>>
>>>>> If this is as bad as you suggest, then Cayenne Modeler should either
>>>>> prevent this from happening or display an explicit warning.
>>>>
>>>>
>>>> I don't think it is bad at all and never suggested it was. It is a
>>>> very important and useful feature.
>>>>
>>>> mrg
>>>
>>>
>
>
This archive was generated by hypermail 2.0.0 : Wed Apr 21 2010 - 08:46:59 EDT