1

我正在尝试生成从实体创建的数据库。我正在使用 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”注释始终带有下划线,并带有错误说明 «Table "AnoLectivo" cannot be resolve»。

到目前为止,我已经搜索了很多,但还没有解决这个问题......任何想法?干杯

4

2 回答 2

2

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

于 2011-06-12T12:18:01.573 回答
1

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

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

关闭 JPA 验证器

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

  • 导航到“首选项”对话框(“窗口”->“首选项”)中的“验证”窗格。
  • 禁用构建阶段的 JPA 验证器。
于 2011-06-11T18:06:30.517 回答