У меня есть back-end приложение Spring 4.1.0 с доменами, аннотированными в JPA (с Hibernate 4.3.5 в качестве поставщика сохранения) используя Maven в качестве инструмента построения. Теперь я хочу добавить веб-интерфейс для этого приложения и решил использовать Grails 3.x в качестве моей веб-структуры. Я хочу повторно использовать существующие существующие классы JPA аннотированных доменов с Grails, а затем использовать generate-all для создания контроллеров и представлений для каждой модели домена. Моя первая цель заключается в том, чтобы получить базовую функциональность CRUD на старых моделях домена из этого веб-приложения.Grails 3.x: Повторное использование JPA/Hibernate Классы домена: класс домена не найден
После информации, которую я нашел in the Grails documentation и in some older blog posts, а также некоторые слегка связанные SO постов, я создал проект нового Grails и упаковываю мой существующий проект в баночке и установил его (я побежал МВНАМ установить -DskipTests быть точнее), а затем добавил его в build.gradle (на самом деле я просто хочу иметь один проект в конце, но я думал, что сначала попробую его, потому что я не хочу бороться с тем, что Maven и Gradle в одном и том же проект еще):
repositories {
...
mavenLocal()
...
}
dependencies {
...
compile "com.my-company:my-spring-app:1.0.0.CI-SNAPSHOT"
...
}
Нет предупреждений от IntelliJ IDEA 14. Тогда я создал/CONF/спящий режим/файл hibernate.cfg.xml Grails-приложение и попытался положить только один из моих старых JPA аннотированных объектов в нем сейчас:
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration SYSTEM
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<mapping package="com.my-company.my-spring-app.domain" />
<mapping class="com.my-company.my-spring-app.domain.City" />
</session-factory>
</hibernate-configuration>
Никаких жалоб от IDE здесь либо. Класс объект City.java выглядит что-то вроде:
package com.my-company.my-spring-app.domain;
import javax.persistence.*;
import java.util.Date;
import java.util.HashSet;
import java.util.Set;
/**
* City generated by hbm2java
*/
@Entity
@Table(name = "city",
schema = "public",
uniqueConstraints = @UniqueConstraint(columnNames = "name"))
public class City implements java.io.Serializable {
private static final long serialVersionUID = 4674557242772722625L;
@Id
@SequenceGenerator(name = "city_gen",
schema = "public",
sequenceName = "city_id_seq")
@GeneratedValue(strategy = GenerationType.SEQUENCE,
generator = "city_gen")
@Column(name = "id",
unique = true,
nullable = false)
private Long id;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "countryid",
nullable = false)
// @JoinColumn(name = "country_id", nullable = false)
private Country country;
@Column(name = "name",
unique = true,
length = 200)
private String name;
...
}
Тогда я прыгнул в консоли Grails и попытались создать контроллер и вид для класса домена Город:
grails generate-all com.my-company.my-spring-app.domain.City
Но я просто получить класс домена не найдена ошибка:
| Error domain class not found for name com.my-company.my-spring-app.domain.City
Я быстро создал приложение Grails 2.5.0, поставил мой-пружинный app.jar в Lib/и попытался это снова, чтобы увидеть, если это было n с «кровоточащим краем» Grails 3.0.1, но получил тот же результат.
Кто-нибудь знает, что здесь происходит? Как я могу повторно использовать мои старые классы домена JPA с Grails 3.x, чтобы я мог оставаться СУХОЙ только с одним набором объектов домена?
Я просто попробовал, но, к сожалению, это не сработало для меня. Я получаю ту же ошибку, что и раньше. В любом случае, спасибо, Георгиос! – eljaydub