cayenne-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Andrus Adamchik <and...@objectstyle.org>
Subject Re: Changing database connection programmatically
Date Sun, 24 Jan 2016 08:20:08 GMT
> Isn’t it just a question of deleting the datanode in the project, adding the missing
configuration in my ServerRuntimeBuilder and carry on with my life?

This is it.

> On Jan 23, 2016, at 10:18 PM, Hugi Thordarson <hugi@karlmenn.is> wrote:
> 
> Ah, I see… It sure looks like we should be going DataNode-less too. Any caveats or
tricks? Isn’t it just a question of deleting the datanode in the project, adding the missing
configuration in my ServerRuntimeBuilder and carry on with my life?
> 
> - hugi
> 
> 
> 
>> On 23. jan. 2016, at 17:11, Andrus Adamchik <andrus@objectstyle.org> wrote:
>> 
>> There's a bug that we've seen with this, just haven't got to the bottom of it yet.
>> 
>> All I know is that overriding the strategy does not if another strategy is already
present in the XML and sometimes (always?) the Modeler sticks the default strategy in there.
As I am currently in favor of DataNode-less projects, I don't ever see it myself, but it was
reported a few times by others. Need to open a Jira I guess and create a fix.
>> 
>> Andrus
>> 
>> 
>>> On Jan 23, 2016, at 5:47 PM, Michael Gentry <mgentry@masslight.net> wrote:
>>> 
>>> Hi Hugi,
>>> 
>>> This worked for me in 3.1:
>>> 
>>>      // Use a custom Cayenne server runtime.
>>>      serverRuntime = new ServerRuntime("my cayenne model", new
>>> CayenneExtrasModule()));
>>> 
>>> ...
>>> 
>>>  /**
>>>   * Custom Cayenne DI module.
>>>   */
>>>  private static class CayenneExtrasModule implements Module
>>>  {
>>>      @Override
>>>      public void configure(Binder binder)
>>>      {
>>>          // Change the SchemaUpdateStrategy to create the DB schema for
>>> unit
>>>          // testing instead of using the model's default which assumes an
>>>          // existing schema.
>>> 
>>> binder.bind(SchemaUpdateStrategy.class).to(CreateIfNoSchemaStrategy.class);
>>>      }
>>>  }
>>> 
>>> 
>>> On Sat, Jan 23, 2016 at 7:33 AM, Hugi Thordarson <hugi@karlmenn.is> wrote:
>>> 
>>>> Hi Michael, Andrus and Savva.
>>>> 
>>>> Thanks a lot for all the help with this :). The arguments to the
>>>> ServerRuntimeBuilder are exactly what I wanted :).
>>>> 
>>>> One thing though: Setting the SchemaUpdateStrategy in code (in the
>>>> ServerRuntimeBuilder) doesn’t work for me. Works great if I set it in the
>>>> cayenne modeler, but if the modeler has the default
>>>> “SkipSchemaUpdateStrategy” selected, changing it in the
>>>> ServerRuntimeBuilder doesn’t seem to do anything. Any ideas?
>>>> 
>>>> This is how I’m currently initializing my server runtime
>>>> 
>>>>      public static ServerRuntime serverRuntime() {
>>>>              if (_serverRuntime == null) {
>>>>                      _serverRuntime = new ServerRuntimeBuilder()
>>>>                                      .addConfig("cayenne-project.xml")
>>>>                                      .addModule(binder ->
>>>> binder.bind(SchemaUpdateStrategy.class).to(CreateIfNoSchemaStrategy.class))
>>>>                                      .jdbcDriver("org.h2.Driver")
>>>>                                      .url("jdbc:h2:~/h2-testing")
>>>>                                      .build();
>>>>              }
>>>> 
>>>>              return _serverRuntime;
>>>>      }
>>>> 
>>>> Cheers,
>>>> - hugi
>> 
> 


Mime
View raw message