Как создать метамодель JPA 2.0?
В духе безопасности типа, связанного с CriteriaQuery JPA 2.0 также имеет API для поддержки Метамодель представления объектов.
Кто-нибудь знает о полностью функциональной реализации этого API (для генерации метамодели в отличие от создания метамодельных классов вручную)? Было бы замечательно, если бы кто-то также знал шаги по настройке этого в Eclipse (я предполагаю, что это так же просто, как настройка обработчика аннотаций, но вы никогда не знаете).
EDIT:
Просто наткнулся на Hibernate JPA 2 Metamodel Generator. Но проблема остается, так как я не могу найти ссылки для загрузки для jar.
ИЗМЕНИТЬ 2:
Прошло столько времени с тех пор, как я задал этот вопрос, но я подумал, что вернусь и добавлю ссылку на проект Hibernate JPA Model Generator на SourceForge
Ответы
Ответ 1
Было бы замечательно, если бы кто-то также знал шаги по настройке этого в Eclipse (я предполагаю, что это так же просто, как настройка обработчика аннотаций, но вы никогда не знаете)
Да, это так. Ниже приведены реализации и инструкции для различных версий JPA 2.0:
EclipseLink
Hibernate
OpenJPA
DataNucleus
Последняя версия Hibernate доступна по адресу:
Более старая версия спящего режима:
Ответ 2
ПЕРЕСМОТРЕННЫЙ (март/2014 г.)
Пожалуйста, взгляните на jpa-metamodels-with-maven
Hibernate
Рекомендуется использовать Hibernate.
(Я не рассматриваю какие-либо функции/функции/возможности/стабилизаторы для этих реализаций. И вышеприведенное утверждение сосредоточено только на использовании maven, которое я построил.)
<plugin>
<groupId>org.bsc.maven</groupId>
<artifactId>maven-processor-plugin</artifactId>
<executions>
<execution>
<id>process</id>
<goals>
<goal>process</goal>
</goals>
<phase>generate-sources</phase>
<configuration>
<processors>
<processor>org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor</processor>
</processors>
</configuration>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-jpamodelgen</artifactId>
<version>4.3.4.Final</version>
</dependency>
</dependencies>
</plugin>
OpenJPA
OpenJPA, похоже, требует дополнительного элемента <openjpa.metamodel>true<openjpa.metamodel>
.
<plugin>
<groupId>org.bsc.maven</groupId>
<artifactId>maven-processor-plugin</artifactId>
<executions>
<execution>
<id>process</id>
<goals>
<goal>process</goal>
</goals>
<phase>generate-sources</phase>
<configuration>
<processors>
<processor>org.apache.openjpa.persistence.meta.AnnotationProcessor6</processor>
</processors>
<optionMap>
<openjpa.metamodel>true</openjpa.metamodel>
</optionMap>
</configuration>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.apache.openjpa</groupId>
<artifactId>openjpa</artifactId>
<version>2.3.0</version>
</dependency>
</dependencies>
</plugin>
EclipseLink
Для EclipseLink требуется persistence.xml
.
<plugin>
<groupId>org.bsc.maven</groupId>
<artifactId>maven-processor-plugin</artifactId>
<executions>
<execution>
<id>process</id>
<goals>
<goal>process</goal>
</goals>
<phase>generate-sources</phase>
<configuration>
<processors>
<processor>org.eclipse.persistence.internal.jpa.modelgen.CanonicalModelProcessor</processor>
</processors>
</configuration>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>org.eclipse.persistence.jpa.modelgen.processor</artifactId>
<version>2.5.1</version>
</dependency>
</dependencies>
</plugin>
========================================
Для пользователей Apache Maven,
После простой настройки, похоже, работает. (со старым maven-компилятором-плагином, обновлено.)
<!-- This method doesn't work with newest maven-compiler-plugin -->
<!-- But if it ok to work with old maven-compiler-plugin -->
<!-- This is the best method -->
<!-- There is no other required configurations -->
<!-- We don't even require to config any processor names -->
<project>
<build>
<extensions>
<extension>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-jpamodelgen</artifactId>
<version>1.3.0.Final</version>
</extension>
</extensions>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.5.1</version> <!-- this is critical -->
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
вы можете запустить его с помощью "mvn compiler: compile"
UPDATE
Обратите внимание, что этот метод работает только с тем старым maven-компилятором-плагином. Проверьте версию в коде.
Ответ 3
Поддержка Eclipse JPA 2.0 через Dali (которая включена в "Eclipse IDE для разработчиков JEE" ) имеет свой собственный генератор метамодели, интегрированный с Eclipse.
- Выберите проект в Проводнике пакетов
- Перейдите в диалог Свойства → JPA
- Выберите исходную папку из канонической метамодели (JPA 2.0).
- Нажмите кнопку Применить, чтобы генерировать классы метамодели в выбранной исходной папке
![enter image description here]()
Это должно работать на любом поставщике JPA, поскольку сгенерированные классы являются стандартными.
Также см. здесь.
Ответ 4
Для eclipselink для генерации метамодели достаточно только следующей зависимости. Больше ничего не нужно.
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>org.eclipse.persistence.jpa.modelgen.processor</artifactId>
<version>2.5.1</version>
<scope>provided</scope>
</dependency>
Ответ 5
Для Hibernate как поставщика, который является наиболее распространенным IMHO:
В случае создания таких инструментов, как Gradle, Maven вам нужно создать Jibernate JPA 2 Metamodel Generator jar в пути к классам и уровне компиляторa >= 1.6, это все, что вам нужно для сборки проекта, и метамодель будет генерироваться автоматически.
В случае IDE Eclipse
1. goto Project- > Properties- > Java Compiler- > Annotation Processing и включите его.
2. Развернуть Обработка аннотаций → Factory Путь- > Добавить внешнюю банку добавить Hibernate JPA 2 Метамодельная банка генератора проверить вновь добавленную банку и сказать "ОК". Очистите и постройте!
Ссылка Hibernate JPA 2 Ссылка на метамодель генератора из maven repo
https://mvnrepository.com/artifact/org.hibernate/hibernate-jpamodelgen