Генерирование Java-классов из базы данных с помощью hibernate и maven - AnnotationConfiguration отсутствует?

1

Я хочу создать Java-классы из базы данных MySQL, используя спящий режим. Просто используя eclipse и Hibernate-Plugin, это работает отлично (описано здесь: http://www.wikihow.com/Generate-Hibernate-Pojo-Classes-from-DB-Tables), но я хочу сделать это с помощью maven. Это, после некоторых попыток, не работает.

Вообще, у меня есть hibernate.cfg.xml и файл persistance.xml, как с правильной информацией о соединении. Я нашел некоторые темы о том, как сгенерировать классы из java (например, как настроить hibernate-tools с помощью maven для генерации hibernate.cfg.xml, *.hbm.xml, POJO и DAO) и документации для hibernate-maven-plugin (http://mojo.codehaus.org/hibernate3-maven-plugin).

Я пробовал несколько фрагментов кода, наиболее перспективным мне кажется: Maven Java Source Code Generation для Hibernate

Я добавил файл, который мне нужен, и я получил:

           <plugin>
             <groupId>org.codehaus.mojo</groupId>
             <artifactId>hibernate3-maven-plugin</artifactId>
             <version>2.2</version>
             <executions>
                <execution>
                  <phase>generate-sources</phase>
                  <goals>
                     <goal>hbm2java</goal>
                  </goals>
                </execution>
             </executions>
             <configuration>
                <components>
                  <component>
                     <name>hbm2java</name>
                     <implementation>configuration</implementation>
                     <outputDirectory>target/generated-sources/hibernate3</outputDirectory>
                  </component>
                </components>
                <componentProperties>
                  <drop>true</drop>
                  <jdk5>true</jdk5>
                  <configurationfile>/src/main/java/hibernate.cfg.xml</configurationfile>
             <packagename>de.unileipzig.database</packagename>
                </componentProperties>
             </configuration>
          </plugin> 

Но, к сожалению, при исполнении, я получаю

 [ERROR] Failed to execute goal org.codehaus.mojo:hibernate3-maven-plugin:2.2:hbm2java (default-cli) on project AWV: Execution default-cli of goal org.codehaus.mojo:hibernate3-maven-plugin:2.2:hbm2java failed: An AnnotationConfiguration instance is required to use <mapping class="de.unileipzig.database.objectlist"/> -> [Help 1]

Я googled ошибка, и нашел на http://www.mkyong.com/hibernate/hibernate-error-an-annotationconfiguration-instance-is-required-to-use/, что нужно добавить зависимость. Мне показалось что-то неловко, поскольку я использую Hibernate 4 и Maven Plugin для Hibernate 3 (плагин hibernate 4, похоже, не практичен для моего случая: http://www.smartics.eu/hibernate4-maven-plugin/), но я попытался добавить:

<dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-annotations</artifactId>
            <version>3.5.6-Final</version>
        </dependency>

(Поскольку версия, указанная в Mykong-Post, не может быть найдена в моих репозиториях).

К сожалению, все же произошла ошибка. Кто-нибудь знает, как решить эту проблему? Есть ли проблема с аннотацией-зависимостью, или мое использование плагина не так?

После консультации с julschi я добавил следующий код в плагин:

   <plugin>
         <dependencies>
                      <dependency>
                            <groupId>mysql</groupId>
                            <artifactId>mysql-connector-java</artifactId>
                            <version>5.1.6</version>
                        </dependency>
                        <dependency>
                            <groupId>org.hibernate</groupId>
                            <artifactId>hibernate-core</artifactId>
                            <version>3.5.6-Final</version>
                        </dependency>
                        <dependency>
                            <groupId>org.hibernate</groupId>
                            <artifactId>hibernate-entitymanager</artifactId>
                            <version>3.5.6-Final</version>
                        </dependency>
                        <dependency>
                            <groupId>org.hibernate</groupId>
                            <artifactId>hibernate-annotations</artifactId>
                            <version>3.5.6-Final</version>
                        </dependency>
        </dependencies>
    </plugin> 

К сожалению, это ничего не изменило. Когда я использовал версию, используемую в проекте (Hibernate 4.2.7), это приводит к ошибке, что org.hibernate.util.StringHelper не найден; он перемещается в другой пакет (https://docs.jboss.org/hibernate/orm/4.1/javadocs/org/hibernate/internal/util/StringHelper.html). Но если я использую версию 3.5.6-FINAL, я просто получаю ту же ошибку AnnotationConfiguration.

Если кто-то хочет попробовать: весь POM находится здесь: http://nopaste.info/a70449bee6.html.

Теги:
maven
hibernate

1 ответ

0

возможно, создайте раздел зависимостей в самой части плагина, например:

<plugin>
...
  <dependencies>
      <dependency>
         <groupId>com.h2database</groupId>
         <artifactId>h2</artifactId>
         <version>1.2.144</version>
      </dependency>
  </dependencies>
 ...
</plugin>
  • 0
    Спасибо за подсказку, но, к сожалению, это ничего не изменило (подробности см. В сообщении).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню