Генерация сущностей с помощью Hibernate, Tomcat 6, JEE5 - PullRequest
1 голос
/ 11 июня 2011

Я пытаюсь создать базу данных, созданную из сущностей. Я использую Hibernate, PostgreSQL, Tomcat6 и Eclipse для разработки.

Вот как выглядит одна из сущностей:

package pass.entities;

import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;

@Entity
@Table(catalog = "pass2")
@SequenceGenerator(allocationSize=1, 
            initialValue=1, 
            sequenceName = "AL_seq", 
            name ="AL_gen")
public class AnoLectivo implements Serializable{

    private static final long serialVersionUID = -2663573189740765100L;

    @Id
    @GeneratedValue(generator="AL_gen")
    private int ent_id;

    private String id;

    /...
}

И это постоянство. Xml

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
    <persistence-unit name="AnoLectivoSrv" transaction-type="RESOURCE_LOCAL">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <class>pass.entities.AnoLectivo</class>
        <class>test.Test</class>
        <exclude-unlisted-classes>true</exclude-unlisted-classes>
        <properties>
            <property name="javax.persistence.jdbc.url" value="jdbc:postgresql:postgres"/>
            <property name="javax.persistence.jdbc.user" value="postgres"/>
            <property name="javax.persistence.jdbc.password" value="admin"/>
            <property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver"/>
            <property name="hibernate.hbm2ddl.auto" value="create-drop"/>
            <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect"/>
        </properties>
    </persistence-unit>
</persistence>

Проблема в том, что в классе сущностей аннотация «@Table» всегда подчеркивается ошибкой, указывающей, что «таблица« AnoLectivo »не может быть решена».

Пока я много искал, но еще не решил ... есть идеи? веселит

Ответы [ 2 ]

2 голосов
/ 12 июня 2011

У меня возникла проблема на выбранной платформе: Переходя к свойствам проекта -> Постоянство Java, я увидел, что выбранная платформа была "Generic 2.0".Установил плагины Hibernate Tools с этого сайта обновлений: download.jboss.org/jbosstools/updates/stable, перезапустил Eclipse, выбрал платформу Hibernate 2.x и волшебство!Это сработало!

1 голос
/ 11 июня 2011

Это во многом связано с инструментами Dali JPA, доступными в Eclipse.Сообщение об ошибке (сгенерированное валидатором JPA) просто означает, что была предпринята попытка проверить, существует ли таблица в базе данных, указанной в настроенном в данный момент подключении базы данных для проекта.

Onceвы подключаетесь к нужной базе данных или делаете таблицы доступными в базе данных, ошибка должна исчезнуть.

Отключение валидатора JPA

При создании приложения JPAдля пустой схемы базы данных возможно, что эти сообщения просто не будут разрешены до тех пор, пока не будут созданы таблицы.Если провайдер JPA отвечает за создание таблиц, то возникает проблема с яйцом и курицей.Этого можно избежать, отключив средство проверки JPA, выполнив следующие действия:

  • Перейдите на панель проверки в диалоговом окне «Установки» («Окно» -> «Установки»).
  • ОтключитеВалидатор JPA для фазы сборки.
...