【问题标题】:Eclipse reports error on my JPA projectEclipse 在我的 JPA 项目中报告错误
【发布时间】:2011-12-13 12:35:48
【问题描述】:

每次我创建 JPA 项目时,Eclipse 都会报告我的项目中有错误,但我不明白为什么会这样。我在下面添加了图像和错误:

描述资源路径位置类型列“id”无法解析 在表“页面”Page.java /BreakpointJPA/src/no/breakpoint/domain 行 14 JPA问题

描述资源路径位置类型列“标题”不能 在桌子上解决 “页面” Page.java /BreakpointJPA/src/no/breakpoint/domain line 18 JPA 问题

描述资源路径位置类型主键连接列“id” 无法在桌上解决 “页面” Page.java /BreakpointJPA/src/no/breakpoint/domain line 10 JPA 问题

【问题讨论】:

  • 您能显示您的“页面”表的详细信息吗?
  • 是的,我还没有实现时间戳,所以这就是它们不在页面实体中的原因。
  • 所以我猜 Eclipse 是说您的实体没有正确反映数据库的状态? Eclipse 如何知道您正在使用什么数据库?也许它没有使用您显示的数据库“adesnqhp_javaee”?

标签: java eclipse jakarta-ee jpa


【解决方案1】:

我遇到了同样的问题,我的解决方案是刷新数据库连接。

打开 JPA 视图,找到数据源资源管理器。在那里你打开数据库连接,连接你的数据库,点击刷新。然后在您的文件中进行一些更改并保存它,我在我的 id 字段中添加了一个 @Column(name = "") 注释。之后错误消息消失了,我删除了 Column 注释。

问题似乎是eclipse在建立第一个连接后读取数据库表,然后关闭连接。因此,如果您像我一样在第一次连接数据库后进行了一些更改,例如将字段名称从 foo_id 更改为 id,eclipse 不知道这一点并出现此错误。

【讨论】:

  • 我只想指出,您还可以使用 Project Explorer(Juno Service Release 2)强制手动 JPA 验证。右键单击项目,选择“验证”。这避免了为了强制验证而对源文件进行不必要的更改。
  • 我从现有的 db 表中导入了类,并得到“无法为表 Y 解析目录 X”。我刚刚删除了 Eclipse 生成的所有类的 Java 代码中的目录信息(设置为从中导入实体的数据库模式的名称),问题就消失了。
【解决方案2】:

旧线程,但是我遇到了同样的问题,并用更快的方法解决了。

  1. 项目属性 --> JPA
  2. 将连接更改为 .点击应用。
  3. 将连接更改为以前的值。点击应用。

希望这对某人有所帮助。

【讨论】:

    【解决方案3】:

    如果您想轻松解决问题,请阅读本文

    您的数据库没有问题。您只需创建一个从 Eclipse 到我们在将 JPA 功能添加到项目期间所做的相同数据库的新连接。

    步骤:-
    从您的 mysql 提示符创建一个新数据库。
    右键单击 Eclipse/MyEclipse 中的项目,然后转到属性。
    单击左侧的 Eclipse/MyEclipse 选项卡,然后单击 JPA 子菜单。
    然后单击创建新连接。放置一个新的连接名称。并添加相同的数据库。 (您也可以选择更改数据库,但同样的数据库也可以)。
    测试连接,然后单击完成。
    第一次它不会显示新创建的连接名称。只需单击“确定”即可关闭该窗口。

    然后,再次右键单击项目,然后单击属性。现在您可以在该连接下拉列表中看到您新创建的连接。选择它并单击确定。

    您的错误将消失。

    此错误的可能原因:-
    每当您使用任何使用 persistence.xml 的项目进行连接时,Eclipse 都会与您的数据库建立连接,但仅限于第一次。
    因此,此后的任何更改,尤其是来自数据库端(表名等)的更改都会从 Eclipse 中引发错误。

    谢谢。

    【讨论】:

      【解决方案4】:

      我遇到了同样的问题。这是我的解决方法

      1. 刷新了连接
        • 转到数据源浏览器
        • 选择连接并右键单击
        • 选择刷新
      2. 清理项目
        • 转到项目菜单
        • 选择干净

      【讨论】:

        【解决方案5】:

        进入Data Source Explorer,断开数据库连接,连接数据库连接后,在你的项目中右键点击验证。

        希望对你有帮助。

        【讨论】:

          【解决方案6】:

          您的项目中是否包含 JPA/JPA2 接口?如果您使用的是 maven,则需要包含类的依赖项。我假设它们是,因为导入声明中没有出现红线,但为了安全起见,您应该验证它们是否存在。

          对于 JPA2 依赖,您可以使用:

          <dependency>
              <groupId>org.hibernate.javax.persistence</groupId>
              <artifactId>hibernate-jpa-2.0-api</artifactId>
              <version>1.0.0.Final</version>
          </dependency>
          

          【讨论】:

          • 我刚刚重读了您的问题,并意识到我的答案可能与问题无关,但将其留在这里作为对其他人有用的信息,因为它确实与问题有关。
          【解决方案7】:

          你可以试试这个:

          @Id
          @GeneratedValue(strategy=GenerationType.AUTO)
          @Column(name = "id", unique=true, nullable=false)
          private int id
          

          【讨论】:

          • 标题类似:@Column(name="title")
          【解决方案8】:

          尝试在@Column(name="") 的引号内进行代码辅助。或者打开 JPA 详细信息视图并查看列名组合以查看列选项。 @Table(name="page") 注解没有验证错误,所以看起来 Eclipse 正在查找页表。

          【讨论】:

            【解决方案9】:

            注释看起来正确,你确定你的项目类路径是好的吗?首先尝试构建没有 id 和 title 字段的实体。

            【讨论】:

              【解决方案10】:

              在我的情况下,它只是 Properties->JPA->Add connection 中的旧连接。所以刷新无济于事。 正确的数据库的新连接将在刷新不可用时有所帮助。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2012-10-04
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2014-02-16
                • 1970-01-01
                相关资源
                最近更新 更多