为什么这个 JPA 2.0 映射在 Eclipse/JBoss Tools 中给我一个错误?

2023-12-02

I have the following situation: Valid XHTML
(source: kawoolutions.com)

JPA 2.0 映射 (仅考虑 Zip 和 ZipId 类可能就足够了,因为这似乎是错误的来源):

@Entity
@Table(name = "GeoAreas")
@Inheritance(strategy = InheritanceType.JOINED)
@DiscriminatorColumn(name = "discriminator", discriminatorType = DiscriminatorType.STRING)
public abstract class GeoArea implements Serializable
{
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id")
    protected Integer id;

    @Column(name = "name")
    protected String name;

    ...
}

@Entity
@Table(name = "Countries")
@DiscriminatorValue(value = "country")
public class Country extends GeoArea
{
    @Column(name = "iso_code")
    private String isoCode;

    @Column(name = "iso_nbr")
    private String isoNbr;

    @Column(name = "dial_code")
    private Integer dialCode = null;

    ...
}

@Entity
@Table(name = "Zips")
@IdClass(value = ZipId.class)
public class Zip implements Serializable
{
    @Id
    @Column(name = "code")
    private String code;

    @Id
    @ManyToOne
    @JoinColumn(name = "country_code", referencedColumnName = "iso_code")
    private Country country = null;

    ...
}

public class ZipId implements Serializable
{
    private String country;

    private String code;

    ...
}

非常简单的设计:

国家是一个地理区域,它从根类继承 ID。邮政编码在其所在国家/地区是唯一的,因此它结合了 ISO 代码和实际邮政编码作为 PK。因此,Zips 引用了 Country.iso_code,它有一个替代的唯一的、非空的键(参考非主要关键栏!)。 Zip.country 关联获得一个 @Id 注释,其变量名称与其 ID 类 ZipId 中的变量名称相同。

但是我从 Eclipse 中收到此错误消息(也使用 JBoss Tools):

验证消息: “与 ID 类属性国家/地区匹配的属性没有正确的类型 java.lang.String”

  1. 为什么这是错误的JPA 2.0语法(参见 Zip.country 上的 @Id 注释)?我不认为是这样。毕竟Zip.country和ZipId.country的类型can't对于 JPA 2 来说是相同的,因为 @ManyToOne 上的 @Id 注释和 PK 是一个简单的整数,它成为 ID 类对应项。有人可以检查/确认吗?
  2. 这可能是 JBoss Tools 中的一个错误吗? (哪个软件组件报告了上述错误?将 3 个表和实体类放入新的 JavaSE 项目时,没有显示确切代码的错误...)

回答自己的问题...

我对引用建模的方式是使用字符串,因为 FK 指向国家表中的 iso_code 列,该列是 CHAR(2),所以基本上我的映射是正确的。然而,问题是 JPA 2.0 除了引用之外不允许任何其他内容主键列。这就是 Eclipse Dali JPA 验证器所显示的内容。

摘自 Keith/Schincariol 的“Pro JPA 2.0”,第 283 页顶部,“派生标识符的基本规则”(规则 #6):“如果实体中的 id 属性是关系,则实体中匹配属性的类型id 类与关系中目标实体的主键类型具有相同类型(无论主键类型是简单类型、id 类还是嵌入 id 类)。”

个人附录:

我不同意 JPA 2.0 有此限制。 JPA 1.0 映射允许引用非 PK 列。请注意,使用 JPA 1.0 映射并不是我想要的。我宁愿对 JPA 2.0 施加此限制的原因感兴趣。 JPA 2.0 绝对是有限制的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么这个 JPA 2.0 映射在 Eclipse/JBoss Tools 中给我一个错误? 的相关文章

  • 使用祖父母接口的默认方法

    我完全不明白为什么这行不通 interface Test default void doMagic System out println Abracadabra class TestImpl implements Test class Sp
  • 访问 java jigsaw 模块中的资源文件[重复]

    这个问题在这里已经有答案了 我正在尝试从项目中的类访问 Eclipse 项目中的文件 我需要将该项目声明为 jigsaw 模块才能从其他项目访问它 但是通过这样做 我无法再访问项目中的 example png 等文件 这是我的项目结构 pr
  • 在 Eclipse 4.4.2 中使用 C 代码中的构建变量

    我有一个之前使用 Eclipse 3 5 2 创建的项目 在其中 我能够在项目属性中设置构建变量 在这种情况下 假设我设置了SW VERSION是 4403 现在这应该是一个十六进制数字 所以在构建设置中 我添加了一个符号 VERSION
  • 比较在 Eclipse Neon 中不工作

    我 最后 尝试从 Mars 2 升级到 Eclipse Neon 安装 SVN 支持和 SVNKit 1 8 14 连接器后 我可以访问我的存储库 然而Compare不管用 如果我右键单击已修改的文件 然后选择与工作副本中的基础进行比较将显
  • 如何在 Javascript 中将字符串数组转换为特定的树结构

    我从后端获取文件路径列表 它代表文件夹结构 如下所示 paths path to file1 doc path to file2 doc foo bar doc 路径的长度是任意的 为了使用文件树组件 角度2树组件 https github
  • JavaDoc @see MyClass 构造函数返回警告“未找到引用”

    我正在尝试为我的客户端库创建 javadoc 在 MyOtherClass 中 我放置了下面的 see 并收到警告 MyOtherClass 和 MyClass 都位于同一项目中的不同包中 see MyClass Constructor T
  • R中的等值线绘图问题

    编辑 我已经意识到问题的根源 我只有我有数据的县的计数信息 该信息少于我正在绘制的区域中的县数量 按理说 问题代码行在这里 mapnames lt map county plot FALSE 4 names colorsmatched lt
  • 如何在 Scala 中编写 Pig UDF

    我正在尝试在 Scala 中编写 Pig UDF 使用 Eclipse 我已将 pig jar 添加为 java 构建路径中的库 这似乎解决了以下 2 个导入问题 导入 org apache pig EvalFunc 导入 org apac
  • 如何为新的 eclipse (neon) java 项目初始化 git

    我安装了 eclipse Neon 的新副本 并在一个新的闪亮工作区中创建了一个新的 gradle java 项目 将 git 添加到聚会中的最佳实践是什么 我读到在项目目录中初始化 git 是真是个坏主意 https stackoverf
  • 如何使用 Vim 和 Eclipse 提高 PHP5.3 项目的工作效率(可能使用 Eclim 与 Zend Studio 集成)

    在开发应用程序时 我总是努力提高生产力 在过去的几年里 我可以说我在提高生产力方面取得了良好的进展 但我仍然发现我需要更多的工具或方法 我需要更快地编辑并学习盲打 目前正在过程中 因此我发现需要转向 Vim 现在已经一年多了 我已经放弃了
  • 在 Mac OSX 上将 JDK 7 或更高版本与 Android Studio 和 Eclipse 一起使用

    尽管已经安装了 JDK 8 Android Studio 和 Eclipse 都要求我安装 JDK 6 网上的几个解决方法告诉我更改 java home 以指向 JDK 8 安装位置 这样 usr libexec java home 和 j
  • 如何在Mac上使用eclipse安装jetty

    我是一个新手 jetty 和 RESTful API 我想使用 Jetty 创建 REST 服务 并希望将嵌入式 jetty 与 eclipse 一起使用 任何人都可以建议我在 Mac OS 中使用 Eclipse 安装 Jetty Jet
  • 无法在 Eclipse 中连接到虚拟机

    想要改进这篇文章吗 提供此问题的详细答案 包括引用和解释为什么你的答案是正确的 不够详细的答案可能会被编辑或删除 当我尝试在 Eclipse 上调试任何项目时 我突然开始遇到这个奇怪的错误 我不记得有什么改变让这个问题突然出现 Launch
  • Elasticsearch 关于“空索引”的查询

    在我的应用程序中 我使用了几个elasticsearch索引 它们在初始状态下不包含索引文档 我认为这可以称为 空 该文档的映射是正确且有效的 该应用程序还有一个包含实体的关系数据库 这些实体可能具有在 elasticsearch 中关联的
  • Android:R 类停止生成

    我是 android 编程的新手 我正在做 Commsware 教程中的教程 确切地说是 T3 教程 期间我清理了项目 之后 R 类文件停止生成 我删除了该项目 看起来相同的错误正在传播到我正在创建的其他新项目 新创建的项目也会出现此错误
  • 在 Eclipse 中的调试会话期间记录所有跟踪信息

    我想记录调试会话的每个步骤的所有调试信息 以便稍后处理所有这些数据 例如调用的方法的名称 参数值 所有变量值等 有没有任何选项可以实现此目的 我应该在哪里更改代码才能实现此目的 一件重要的事情 它不是一个 java 程序 这是一个使用 ac
  • 新的 Android 项目未创建布局或 Java 文件

    这两天我一直在尝试简单地阅读 Big Nerd Ranch Android 编程书 第一章的前几页 我的问题的要点是 当我创建新的 Android 应用程序时 不会创建布局或 java 文件 我已经从 Android 开发站点安装了 ADT
  • 使用 AutoMapper 展开 DTO

    我一直在尝试使用 AutoMapper 来节省从 DTO 到域对象的时间 但是我在配置地图以使其正常工作时遇到了麻烦 并且我开始怀疑 AutoMapper 是否可能是错误的工具工作 考虑这个域对象的示例 一个实体和一个值 public cl
  • 与 Eclipse 中的 Java Content Assist 交互

    作为我的插件项目的一部分 我正在考虑与 Eclipse 在 Java 文件上显示的内容辅助列表进行交互 我正在尝试根据一些外部数据对列表进行重新排序 我看过一些有关创建新内容辅助的教程 但没有看到有关更改现有内容辅助的教程 这可能吗 如果是
  • 如何从 Mac OS X 中完全删除 Eclipse(包括设置和插件)?

    我的 Eclipse 与 GAE 损坏并且工作异常 所以我从Application文件夹中删除了Eclipse 但是留下了垃圾 我重新下载了全新的 eclipse 但它以旧设置运行 并且损坏的 GAE 结构仍然存在 如何从 Mac 上完全删

随机推荐

  • PHP:获取小数位数

    有没有一种直接的方法来确定 PHP 中整数 双精度值的小数位数 也就是说 不使用explode str 1 23444 print strlen substr strrchr str 1
  • JavaScript 中 && 简写的解释

    使用 jQuery 的水印插件 我尝试 jslint 并最小化函数 但我遇到了以前从未见过的语法 其中存在确实应该有赋值或函数调用的表达式 function fn watermark function css text return thi
  • Neo4j 2 Cypher 模糊搜索

    我正在使用 Neo4j 2 REST API 并且能够添加插件 我的数据库中有一个实体 其标签为 实体 名称为 英国 如何执行模糊搜索来查找该实体 我希望能够使用以下查询找到它 United Kingdom 英国 英国 So the
  • 如何禁用 Nuxt3 默认加载指示器?

    我已经查看文档和谷歌搜索很长时间了 由于某种原因 我似乎无法弄清楚如何禁用默认的 Nuxt3 加载指示器 有谁知道如何处理这个问题 当我刷新 路径上的页面时 它只会出现一瞬间 因此页面显示的是index vue页面 附上图片以供参考 尝试设
  • 如何使用与主脚本在同一文件中定义的 Moose 类?

    以下脚本p pl工作正常 use feature qw say use strict use warnings use lib use P1 my obj P1 gt new name gt John say The name is obj
  • Rmarkdown 中使用 apsrtable 的多个 lm() 模型表

    Goal 呈现使用创建的多个模型的结果lm 函数 一起放在一个格式良好的表格中 该表将在 Rmd 文件中生成并输出到 PDF 文档 建议的解决方案 In 使用 R 和 RStudio 进行可重复的研究 有一个例子使用apsrtable 并排
  • 为 java ejb Web 服务启用 https

    我正在使用 ejb 3 和 glassfish 3 1 1 开发一个网络服务 我正在使用 Netbeans 7 0 想知道如何为此 Web 服务在端口 8181 上启用 https 我不需要任何身份验证方法 只需通过 https 保护通信即
  • 使用 bootstrap 时模态不显示

    每当我按下按钮时 模式就不会显示 我尝试了很多事情 甚至创建了一个 custom js 来将此代码放入 myModal modal show 但就是不行 我哪里做错了 这是代码
  • 如何在 Inno Setup 中制作一个按钮或文本,单击时打开网页

    如何在 Inno Setup 安装程序中制作一个按钮或文本 单击时会打开一个网页 要打开网页 请使用 procedure OpenBrowser Url string var ErrorCode Integer begin ShellExe
  • 具有高级绘图函数的多个绘图,尤其是plot.rqs()

    我正在尝试并排绘制两个回归摘要和一个居中标题 每个回归摘要由以下方式生成plot rqs 总共有 9 个地块 我尝试过使用par mfrow c 1 2 已经 但正如我从 Paul Murrel 2006 的书中了解到的 高级函数如plot
  • 向 app.config 添加了新的应用程序设置,但 MSI 不会安装它(不会覆盖)

    我们最近向旧版 winforms 应用程序 Net 4 6 1 的 app config 日志服务器的 URL 添加了新的应用程序设置 不是用户设置 旧版本是 1 0 3 我们将所有程序集的版本更改为 1 0 4 并在安装项目 Visual
  • 我的 Android 应用程序在 Play 商店中显示与 Android 4.4.4 Moto E 不兼容

    我的 Android 应用程序在 Google Play 商店中显示与 Android 4 4 4 Moto E 不兼容 我尝试了很多方法 请问如何解决这个问题 你能帮我一下吗 提前致谢 如果您使用 Google Maps 那么为了支持 M
  • 您可以重命名“选项”标签吗? (Chrome 扩展)

    我试过这个 https developer chrome com extensions options html并制作了一个选项页面 因此 在我的扩展图标下添加了一个选项 名称为Option 我的问题是有没有办法重命名Option并改变它像
  • 将多个列表写入 csv Python

    我正在尝试编写一个将多个列表写入单个 csv 文件的函数 并且我能够获取要写入的列标题 但无法获取任何数据 我的数据位于与此类似的列表中 92 3801 2 22 4 第二个是 3 0 2 23 5 我正在寻找有关此的指导 谢谢你 impo
  • 如何编写批处理文件来切换网络适配器?

    在我的工作中 有一个可以连接的公司内部网 以及一个 Wifi 网络 但是 公司政策规定我们不能在一台计算机上同时连接到两个网络 不过 我需要在不同的时间使用任一网络 而我能够做到这一点的唯一方法是转到 控制面板 的 网络 部分中的 更改适配
  • 为什么 time.sleep 不能像打印结束参数一样工作?

    我正在尝试使用 time sleep 在打印语句之间暂停 import time def test print something end time sleep 1 print and end time sleep 1 print some
  • 使用淘汰赛根据下拉列表中选定的值隐藏/显示问题

    好吧 我是一个淘汰赛菜鸟 很难解决一个非常简单的问题 我有一个与淘汰的 observableArray 相关的下拉列表 还有一个与另一个 observableArray 相关的问题列表 问题应根据下拉列表的选定值隐藏 显示 在查看小提琴之前
  • R:具有特定变量范围的多元线性回归[重复]

    这个问题在这里已经有答案了 看起来很简单 但我不知道如何用 R 编写它 我有一个包含约 100 个变量的数据框 df 我想在作为我的第一个变量 Y 的响应和作为回归量的变量 25 到 60 之间进行多元回归 问题是我不想写每个变量名称 例如
  • 如何获取实时更新?

    我经常在 Facebook 上聊天 而且我越来越喜欢编码 所以我尝试创建一个聊天脚本 这里是 http wooflux co cc ChatSystem 1 1 ChatSystem 1 1 你试试看 但它只是一个测试版 因此还存在一些错误
  • 为什么这个 JPA 2.0 映射在 Eclipse/JBoss Tools 中给我一个错误?

    I have the following situation source kawoolutions com JPA 2 0 映射 仅考虑 Zip 和 ZipId 类可能就足够了 因为这似乎是错误的来源 Entity Table name