2015-04-28 3 views
3

У меня есть 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, чтобы я мог оставаться СУХОЙ только с одним набором объектов домена?

ответ

0

Я разрешил аналогичную проблему, поставив hibernate.cfg.xml в grails-app/conf (не внутри подкаталога hibernate), как описано в mapping-with-hibernate-annotations-in-grails-3-0-1.

+0

Я просто попробовал, но, к сожалению, это не сработало для меня. Я получаю ту же ошибку, что и раньше. В любом случае, спасибо, Георгиос! – eljaydub

Смежные вопросы