使用Hibernate,Tomcat 6,JEE5生成实体

时间:2011-06-11 16:45:45

标签: hibernate jpa persistence tomcat6 java-ee-5

我正在尝试生成从实体创建的数据库。我正在使用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;

    /...
}

这是persistence.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 个答案:

答案 0 :(得分:2)

我在所选平台上遇到了问题:转到项目属性 - &gt; Java持久性,我看到所选平台是“Generic 2.0”。从这个更新站点安装了Hibernate Tools插件:download.jboss.org/jbosstools/updates/stable,重启Eclipse,选择平台作为Hibernate 2.x和魔法!有效!

答案 1 :(得分:1)

这与Eclipse中提供的Dali JPA Tools有很大关系。错误消息(由JPA验证程序生成)仅表示尝试验证该表是否存在于项目的当前配置的数据库连接中指定的数据库中。

一旦连接到正确的数据库,或者使数据库中的表可用,错误就会消失。

关闭JPA验证器

在针对空白数据库模式构建JPA应用程序时,有可能在创建表之前不会解析这些消息。如果JPA提供者负责创建表,那么就会出现鸡和蛋的问题。通过使用以下步骤关闭JPA验证器可以避免这种情况。

  • 导航到“首选项”对话框(“窗口” - >“首选项”)中的“验证”窗格。
  • 为构建阶段禁用JPA验证程序。