Spiel : bean-Klasse nicht erweitert, mit EbeanServerFactory
mittels play framework 2.4.2, ich habe eine Verbindung zu einer Fernen Datenbank wich offline sein können.
Ich versuche zu vermeiden, das "Keine Verbindung zur Datenbank [distantdatabase]" exception beim Start.
Nachdem versucht, viele Methoden, habe ich beschlossen, erstellen Sie manuell eine EbeanServerFactory Zugriff auf die entfernte Datenbank.
Dies ist mein Modell :
@Entity
@Table(name="vehicules")
public class Vehicule {
@Id
public Long id;
public Long noParc;
public Long etat;
}
Und dies ist, wie ich versuche, Zugriff auf Daten
//Classes of distant database
List<Class<?>> saetrClasses = new ArrayList<Class<?>>();
saetrClasses.add(Vehicule.class);
//Access configuration to distant database
DataSourceConfig ds = new DataSourceConfig();
ds.setDriver("com.mysql.jdbc.Driver");
ds.setUrl("jdbc:mysql://localhost/distantdatabase");
ds.setUsername("stack");
ds.setPassword("overflow");
ServerConfig saetrServerConfig = new ServerConfig();
saetrServerConfig.setName("distantdatabase");
saetrServerConfig.setDefaultServer(false);
saetrServerConfig.setClasses(saetrClasses);
saetrServerConfig.setRegister(false);
saetrServerConfig.setDataSourceConfig(ds);
Logger.warn("EbeanServerFactory.create...");
EbeanServer saetrServer = EbeanServerFactory.create(saetrServerConfig);
saetrServer.find(Vehicule.class).where().gt("lastMaj", lastRequestTime).findList();
bauen.sbt
lazy val root = (project in file(".")).enablePlugins(PlayJava, PlayEbean, PlayEnhancer)
plugins.sbt
addSbtPlugin("com.typesafe.sbt" % "sbt-play-enhancer" % "1.1.0")
Bekomme ich die folgende Fehlermeldung
[warn] - application - EbeanServerFactory.create...
[error] - com.avaje.ebeaninternal.server.deploy.BeanDescriptorManager - Error in deployment
java.lang.IllegalStateException: Bean class models.distantdatabase.Vehicule is not enhanced?
[...]
Ich verstehe nicht diesen Fehler. Ich habe mir eine Menge Beispiele und nicht finden, was mir fehlt. Irgendeine Idee ?
Edit : ich schaute in den Quellcode von ebean, und ich bekomme diese Fehlermeldung, weil mein Modell nicht implements EntityBean-Schnittstelle.
Wie kann ich Kraft Implementierung dieser Schnittstelle ?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie erklären, für welche Klassen Sie wollen verstärkt werden. In Ihrer Anwendung.conf Folgendes hinzu:
Denke ich, werden Sie brauchen, um sicherzustellen, dass die
EbeanServer
Spannung angelegt (nur eine Vermutung, ich habe nicht versucht, Ihr Konzept vor).Ich endlich, das Datenbank-Modell war nicht genau das, was ebean erwartet.
Um es zu lösen, ich hinzufügen in der Anwendung.conf Parameter für eine lokale Datenbank :
Erstellte ich eine leere Datenbank "distantdatabase" auf dem mySQl server.
Ich startete meine Bewerbung nach. Es erstellt Tabellen in der Datenbank, und die Tabellen-Erstellung sql-Skript (/conf/Entwicklungen/distantdatabase/1.sql).
Mit dieser Datei könnten Sie genau wissen, welche Datenbank-Modell ebean erwartet.
Dann verwenden Sie eine entfernte Datenbank, die offline ist, müssen Sie nicht deklarieren, nichts über ihn in Anwendung.conf, und deklarieren Sie eine ServerConfig wie diese :
Finden Sie könnten beispielsweise von ebean tests : https://github.com/ebean-orm/avaje-ebeanorm/blob/master/src/test/java/com/avaje/tests/basic/MainDbBoolean.java