【问题标题】:Hibernate symbols @id @column are not recognized休眠符号@id @column 无法识别
【发布时间】:2011-03-17 07:23:15
【问题描述】:

在我的 User 类中,我尝试添加符号 @id 和 @column。

我收到一个编译错误:

找不到符号类 ID/列。

我正在使用 IDEA。

在文档中,我没有看到 @Id 和 @Column 的任何引用:http://docs.jboss.org/hibernate/stable/annotations/api/

我的 pom.xml 中有这个:

<dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>3.0.3.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>3.0.3.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.freemarker</groupId>
            <artifactId>freemarker</artifactId>
            <version>2.3.14</version>
        </dependency>
        <dependency>
            <groupId>org.mongodb</groupId>
            <artifactId>mongo-java-driver</artifactId>
            <version>2.0</version>
        </dependency>
        <dependency>
            <groupId>org.perf4j</groupId>
            <artifactId>perf4j</artifactId>
            <version>0.9.13</version>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.16</version>
        </dependency>
        <dependency>
            <groupId>hibernate</groupId>
            <artifactId>hibernate</artifactId>
            <version>3.1rc2</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-hibernate3</artifactId>
            <version>2.0.8</version>
        </dependency>
        <dependency>
            <groupId>hibernate</groupId>
            <artifactId>hibernate-annotations</artifactId>
            <version>3.1beta4</version>
        </dependency>
        <dependency>
            <groupId>commons-dbcp</groupId>
            <artifactId>commons-dbcp</artifactId>
            <version>1.4</version>
        </dependency>
        <dependency>
            <groupId>hibernate</groupId>
            <artifactId>hibernate-annotations</artifactId>
            <version>3.1beta4</version>
        </dependency>


    </dependencies>

【问题讨论】:

  • 很难从这个判断:也许显示不编译的类。顺便说一句,您的依赖项中列出了两次休眠注释。为什么要使用两年前的测试版?

标签: java hibernate spring maven-2


【解决方案1】:

你需要的是java的持久化注解 您可以添加

的依赖项

javax.persistence:persistence-api

虽然向 hibernate 实体管理器添加依赖项将解决您的传递问题,但我仍然建议您添加您在工件中真正使用过的依赖项。

【讨论】:

    【解决方案2】:

    如果要使用 JPA 1.0 实现,需要以下依赖:

    <properties>
      <org.hibernate.version>3.4.0.GA</org.hibernate.version>
    </properties>
    <repositories>
      <repository>
        <id>repository.jboss.org-public</id>
        <name>JBoss Public Repository Group</name>
        <url>https://repository.jboss.org/nexus/content/groups/public</url>
      </repository>
    </repositories>
    <dependencies>
      <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-entitymanager</artifactId>
        <version>${org.hibernate.version}</version>
      </dependency>
      <!-- Hibernate uses slf4j for logging, we use log4j as backend -->
      <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.14</version>
      </dependency>
    </dependencies>
    

    如果您想使用 JPA 2.0 实现,只需将 org.hibernate.version 替换为:

    <properties>
      <org.hibernate.version>3.5.3-Final</org.hibernate.version>
    </properties>
    

    在这两种情况下,上述 Hibernate 依赖项都会为您提供一切您需要的传递性。


    您可能已经注意到,Hibernate 使用 SLF4J,而 Spring 使用 Jakarta Commons Logging。我建议将 Spring 配置为使用 SLF4J,并在此 previous answer 中进行了说明。

    另见

    【讨论】:

    • @Blankman:JPA 是 Hibernate 实现的标准(JPA 实现由 Hibernate Entity Manager 提供,它依赖于 Hibernate Annotations)。我建议在 Hibernate 特定的注释上使用 JPA。
    【解决方案3】:

    Java 区分大小写。这是@Id@Column。此外,这些是 JPA 注释,即它们不是 Hibernate 的一部分,而是 Java EE 的一部分(在 javax.persistence 包中)。对应的Hibernate注解是org.hibernate.mapping包中的@PrimaryKey@Column

    【讨论】:

    • 我无法让 org.hibernate.annotations.Id 工作......嗯......我有:hibernatehibernate-annotations 3.1beta4
    • @Blankman:我弄错了这些注释的位置(@Id 来自 JPA,而不是 Hibernate)。我已经更正了答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-28
    • 1970-01-01
    • 2017-08-04
    • 1970-01-01
    • 1970-01-01
    • 2015-01-13
    • 2023-03-14
    相关资源
    最近更新 更多