On Jul 11, 2011, at 11:08 AM, Marcin Skladaniec wrote: > First, can the datasource info be removed from the cayenne model files > alltogether? I've noticed that in 3.1M2 there is no separate xml file for > driver, but the nodes are defined in the main config file. My brief attempt > to just delete that info lead to nowhere, but that could be just a problem > with my setup.
Yes in 3.1 nodes are defined in the main config file. The normal approach to abstracting this data is via JNDIDataSourceFactory. Or in non-web environments (to avoid manually bootstrapping JNDI provider), just create a custom DataSourceFactory that would pull DB connection info in a way appropriate for the app. > Second, I have an issue with PK generation strategies. Those are defined on > the DbEntity level, which makes sense, but also makes it harder to have > different strategies for different database engines. True. Changing PK gen strategy in runtime is possible now, but is somewhat involved. I feel like many things in the mapping would benefit from a more straightforward way of overriding in runtime. Maybe need a separate DI service for PK gen. > This also comes down to the documentation > onhttp://cayenne.apache.org/doc/primary-key-generation.html. > In the DatabaseEntity there are 3 options for the PK generation strategy: > "Default", "Database-Generated" and "Custom sequence". > I understand that Default refers to cayenne generated primary key, but the > documentation mentioned in the last paragraph states, under the section > describing database generated pk: "Currently MySQL and SQLServer adapters > have this feature turned on by default.". > I'm a little confused what is default anymore, and how cayenne distinguishes > the two. Default is same as before - a per-adapter strategy of generating PK. The above mentioned sentence is about DB-generated strategy. It is not supported on all DB's due to driver limitations. So some Cayenne adapters have it on, others don't. In general I agree that we may need to add some clarity into PK generation strategies. > Now finally my real problem, in cayenne generated pk scenario sqlserver is > said to use a stored procedure tied to AUTO_PK_TABLE to manage the primary > key. In my application this procedure is installed manually before the > cayenne service startup, I have verified its existence in the database, but > it is never available to cayenne, causing exception attached at the end of > the email. > What can cause such problem? is that the datasource defined in model? I'm > running out of ideas, any help would be greatly appreciated. Probably in the wrong schema. I am an infrequent user of SQLServer, but a few times a similar thing happened to me it was schema related. Cheers, Andrus
