Какова правильная конфигурация для Play 2.4 / Ebean / JPA / hibernate-entitymanager?

Я пытаюсь перенести проект Play 2.3.10 на версию 2.4.4. В настоящее время использует:

  • libraryDependencies ++= Seq(javaCore, javaJdbc, javaJpa, javaEbean, javaWs, ...
  • "org.hibernate" % "hibernate-entitymanager" % "3.6.9.Final"

Я обновил определение сборки:

  • Удалены javaEbean из библиотеки Зависимости в Build.scala
  • добавленной .enablePlugins(PlayJava, PlayEbean, PlayEnhancer) в Build.scala
  • добавленной addSbtPlugin("com.typesafe.sbt" % "sbt-play-ebean" % "1.0.0") в plugins.sbt
  • добавленной addSbtPlugin("com.typesafe.sbt" % "sbt-play-enhancer" % "1.1.0") в plugins.sbt
  • "org.hibernate" % "hibernate-entitymanager" % "4.3.9.Final"

В конце я получил это исключение во время выполнения для одного объекта:

Repeated column in mapping for entity: models.A column: _ebean_intercept (should be mapped with insert="false" update="false")

Я предполагаю, что что-то не так с улучшением байтового кода, но я понятия не имею, как это работает. В классе модели нет ничего исключительного, кроме того, что я обновил базовый класс из play.db.ebean.Model в com.avaje.ebean.Model, Он также имеет @EmbeddedId которые используют другую модель, которая имеет @Embeddable,

1 ответ

Я не уверен, почему у вас есть Hibernate-EntityManager? Я предполагаю, что вы хотите использовать Ebean. Если это так, вот как у меня это работает:

  1. Убедитесь, что у вас есть PlayEbean, добавленный к включенным плагинам, и добавьте javaJPA [только для аннотаций] и соединитель mysql для build.sbt, как показано ниже

build.sbt

lazy val root = (project in file(".")).enablePlugins(PlayJava,PlayEbean)

scalaVersion := "2.11.6"

libraryDependencies ++= Seq(
  javaJdbc,
  javaJpa,
  "mysql" % "mysql-connector-java" % "5.1.34",
)
  1. Включите sbt play ebean, чтобы улучшить ваши модели. Вам не нужно включать sbt-play-Enhancer, если у вас включен sbt-play-ebean.

Проект /plugins.sbt

addSbtPlugin("com.typesafe.sbt" % "sbt-play-ebean" % "1.0.0")
  1. Добавьте конфигурацию базы данных и декларацию моделей в application.conf

application.conf

ebean.default = ["models.*"]

db.default.driver=<database driver>
db.default.url=<database url>
db.default.username=<username>
db.default.password=<password>
Другие вопросы по тегам