退会済みユーザー
2017/01/06 21:01 投稿
play2.5(Java)を使用してDB間でのリレーションをしたい。 |
teratailは初めての投稿になります。 |
至らない点もあると思いますが、どうか宜しくお願いします。 |
playframework2.5.10(Java)を使用しております。 |
複数のDBに接続することはできるのですが、DB間でのリレーションができずに困っています。 |
以下の様にFirstModelとSecondModelでリレーションをしようとするとエラーが起きてしまいます。 |
``` |
CreationException: Unable to create injector, see the following errors: |
Error injecting constructor, java.lang.RuntimeException: Error reading annotations for models.first.FirstModel |
at play.db.ebean.EbeanDynamicEvolutions.<init>(EbeanDynamicEvolutions.java:35) |
at play.db.ebean.EbeanDynamicEvolutions.class(EbeanDynamicEvolutions.java:32) |
while locating play.db.ebean.EbeanDynamicEvolutions |
at play.db.ebean.EbeanModule.bindings(EbeanModule.java:21): |
Binding(class play.api.db.evolutions.DynamicEvolutions to ConstructionTarget(class play.db.ebean.EbeanDynamicEvolutions) eagerly) (via modules: com.google.inject.util.Modules$OverrideModule -> play.api.inject.guice.GuiceableModuleConversions$$anon |
... |
``` |
```Java |
@Entity |
public class FirstModel extends Model { |
@Id |
public Long id; |
public String name; |
@OneToOne |
public SecondModel second; |
public static Finder<Long, FirstModel> find = new Finder<>(FirstModel.class); |
} |
``` |
```Java |
@Entity |
public class SecondModel extends Model { |
@Id |
public Long id; |
public String name; |
@OneToOne(mappedBy = "second") |
public FirstModel first; |
public static Finder<Long, SecondModel> find = new Finder<>(SecondModel.class); |
} |
``` |
```application.conf |
db { |
first.driver=com.mysql.jdbc.Driver |
first.url="jdbc:mysql://localhost/first_db" |
first.username=USERNAME |
first.password="PASSWORD" |
second.driver=com.mysql.jdbc.Driver |
second.url="jdbc:mysql://localhost/second_db" |
second.username=USERNAME |
second.password="PASSWORD" |
} |
ebean{ |
first = ["models.master.*"] |
second = ["models.publicEntity.*"] |
first = ["models.first.*"] |
second = ["models.second.*"] |
} |
``` |
知見をお持ちの方がいらっしゃいましたら、お力を貸していただければ幸いです。 |
どうかよろしくお願いいたします。 |
退会済みユーザー
2017/01/06 20:51 投稿
play2.5(Java)を使用してDB間でのリレーションをしたい。 |
teratailは初めての投稿になります。 |
至らない点もあると思いますが、どうか宜しくお願いします。 |
playframework2.5.10(Java)を使用しております。 |
複数のDBに接続することはできるのですが、DB間でのリレーションができずに困っています。 |
以下の様にFirstModelとSecondModelでリレーションをしようとするとエラーが起きてしまいます。 |
``` |
CreationException: Unable to create injector, see the following errors: |
Error injecting constructor, java.lang.RuntimeException: Error reading annotations for models.first.FirstModel |
at play.db.ebean.EbeanDynamicEvolutions.<init>(EbeanDynamicEvolutions.java:35) |
at play.db.ebean.EbeanDynamicEvolutions.class(EbeanDynamicEvolutions.java:32) |
while locating play.db.ebean.EbeanDynamicEvolutions |
at play.db.ebean.EbeanModule.bindings(EbeanModule.java:21): |
Binding(class play.api.db.evolutions.DynamicEvolutions to ConstructionTarget(class play.db.ebean.EbeanDynamicEvolutions) eagerly) (via modules: com.google.inject.util.Modules$OverrideModule -> play.api.inject.guice.GuiceableModuleConversions$$anon |
... |
``` |
```Java |
@Entity |
public class FirstModel extends Model { |
@Id |
public Long id; |
public String name; |
@OneToOne |
public SecondModel second; |
public static Finder<Long, FirstModel> find = new Finder<>(FirstModel.class); |
} |
``` |
```Java |
@Entity |
public class SecondModel extends Model { |
@Id |
public Long id; |
public String name; |
@OneToOne(mappedBy = "second") |
public FirstModel first; |
public static Finder<Long, SecondModel> find = new Finder<>(SecondModel.class); |
} |
``` |
```application.conf |
db { |
first.driver=com.mysql.jdbc.Driver |
first.url="jdbc:mysql://localhost/first_db" |
first.username=USERNAME |
first.password="PASSWORD" |
second.driver=com.mysql.jdbc.Driver |
second.url="jdbc:mysql://localhost/second_db" |
second.username=USERNAME |
second.password="PASSWORD" |
} |
ebean{ |
first = ["models.master.*"] |
second = ["models.publicEntity.*"] |
} |
``` |
知見をお持ちの方がいらっしゃいましたら、お力を貸していただければ幸いです。 |
どうかよろしくお願いいたします。 |