没有 id 的 JPA 实体

2023-11-26

我有一个具有以下结构的数据库:

CREATE TABLE entity (
    id SERIAL,
    name VARCHAR(255),
    PRIMARY KEY (id)
);

CREATE TABLE entity_property (
    entity_id SERIAL,
    name VARCHAR(255),
    value TEXT
);

当我尝试创建 EntityProperty 类时

@Entity
@Table(name="entity_property")
public class EntityProperty {

    private String name;
    private String value;

    @Column(name="name")
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }

    @Column(name="value", nullable=true, length=255)
    public String getValue() {
        return value;
    }
    public void setValue(String value) {
        this.value = value;
    }
}

我得到以下异常:

org.hibernate.AnnotationException: No identifier specified for entity: package.EntityProperty

我知道 JPA 实体必须有主键,但由于我无法控制的原因,我无法更改数据库架构。是否可以创建与这样的数据库模式一起使用的 JPA (Hibernate) 实体?


我猜你的entity_property有一个复合键(entity_id, name) where entity_id是一个外键entity。如果是这样,您可以按如下方式映射它:

@Embeddable
public class EntityPropertyPK {
    @Column(name = "name")
    private String name;

    @ManyToOne
    @JoinColumn(name = "entity_id")
    private Entity entity;

    ...
}

@Entity 
@Table(name="entity_property") 
public class EntityProperty { 
    @EmbeddedId
    private EntityPropertyPK id;

    @Column(name = "value")
    private String value; 

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

没有 id 的 JPA 实体 的相关文章

随机推荐

  • 如何创建线程安全的ContentProvider?

    Android 文档说 可以从各种 ContentResolver 调用 ContentProvider 方法 不同进程和线程中的对象 必须实现它们 以线程安全的方式 我在 Stackoverflow 上找到了这篇文章Android sql
  • go float 零除编译器错误

    这种行为有何意义 只打印编译器警告而不是错误不是更有意义吗 func main var y float64 0 0 var x float64 4 0 y fmt Println x Inf func main var x float64
  • 如何仅更改 javafx css 中的左填充

    我经常使用 html css 但我对 javafx css 完全陌生 所以这将是一个新手问题 但我在任何地方都找不到答案 我有一个充满标签的大网格窗格 除了其他标签之外 我可以为所有这些标签设置填充 例如 GridPane containe
  • C++ 中的越界和未定义的行为

    我知道在 C 中 超出缓冲区范围的访问是未定义的行为 这是来自 cppreference 的示例 int table 4 bool exists in table int v return true in one of the first
  • 两个字符相加产生 int

    我制作了一个简单的程序并使用 GCC 4 4 4 5 编译它 如下所示 int main char u 10 char x x char i u x return 0 g c Wconversion a cpp 我有以下内容 a cpp I
  • Jackson JSON - 反序列化 Commons MultiMap

    我想使用 JSON 序列化和反序列化 MultiMap Apache Commons 4 要测试的代码段 MultiMap
  • 非常量复制构造函数和返回值的隐式转换

    考虑以下 C 代码 struct B struct A A int A A missing const is intentional A B operator B A f return A 1 compiles fine return 1
  • 粘性灵活的页脚和页眉 CSS 在 WebKit 中工作正常,但在 Gecko 中不行

    我正在尝试构建一个允许灵活高度的页眉和页脚的布局 中间的部分占用剩余空间 中间的任何溢出都应该为该中间部分提供一个滚动条 我的适用于 Safari 和 Chrome 的代码是
  • Angular:构建后是否可以读取json文件

    我正在开发一个 Angular 7 项目 该项目需要在不同的服务器上运行 我需要从环境文件中读取服务器 URL 并且无法设置为静态变量 我尝试读取 JSON 文件 但一旦我ng build该项目 它将 JSON 的内容复制为 main js
  • MVC 中 OnChange 事件的 AJAX 调用

    我必须对作为视图一部分的下拉列表的 onchange 事件进行 AJAX 调用 在更改事件中 我需要调用数据库 进行一些计算以显示 UI 然后使用计算来填充图表控件 UI 显示按此顺序 图表 下拉类别列表 带有评分的子类别列表 因此 我需要
  • 使用 phpMyAdmin 的跟踪机制迁移数据库

    在开发数据库中 我在所有表上启用了 phpMyAdmin 跟踪 它记录了我对表结构所做的所有更改 在本例中我对数据跟踪不感兴趣 到目前为止一切顺利 然后我想要做的是为所有跟踪的表取出一份报告 其中包含特定版本 或者日期甚至可以工作 所做的更
  • django - django-taggit 形式

    我想用django taggit 点击这里 文档 点击这里 谈论使用ModelForm生成表单 但我已经有了我想使用的表单 假设我有这样的事情 forms py class MyForm forms Form tags forms Char
  • 在 sizeof 操作中取消引用空指针是否有效[重复]

    这个问题在这里已经有答案了 我遇到了一段代码 对我来说应该崩溃分段故障 但它仍然可以顺利工作 有问题的代码加上相关的数据结构如下 相关注释位于上面 typedef struct double length unsigned char nPl
  • 了解 C++ 指针(当它们指向指针时)

    我想我很好地理解了参考文献和指针 这是我 认为我 所知道的 int i 5 i is a primitive type the value is 5 i do not know the address int ptr a pointer t
  • Kinect:如何从一些深度数据获取骨架数据(从kinect获取,但我修改了一些地方)

    我可以从 Kinect 获取深度帧 然后修改帧中的数据 现在我想使用修改后的深度帧来获取骨架数据 我该怎么做 好吧 我发现没有办法用 microsoft kinect sdks 来做到这一点 现在 我发现使用 OpenNI 是可以的 它是
  • 将多条编码多段线合并为一条编码多段线

    我正在尝试将新的编码多段线与现有多段线合并 而不对整个多段线进行解码和重新编码 新编码的折线将上传到 linux 服务器 我想将其附加到现有的折线 问题是 你不能把它们混在一起 下面是一些可以使用的示例数据 我希望在 PHP 或 shell
  • 如何访问受保护的数组值?

    您好 我有这个数组 我不确定如何从中获取名称 品牌 图像 令牌值 Gloudemans Shoppingcart CartCollection Object items protected gt Array 1264477c2182cc04
  • asp.net:无效的回发或回调参数

    我收到此错误 Server Error in Application Invalid postback or callback argument Event validation is enabled using
  • 将字符串从 __DATE__ 转换为 time_t

    我正在尝试转换从生成的字符串 DATE 宏变成time t 我不需要一个成熟的日期 时间解析器 它只处理 DATE 宏会很棒 预处理器方法会很漂亮 但函数也同样有效 如果相关的话 我正在使用 MSVC 编辑 更正后的函数应如下所示 time
  • 没有 id 的 JPA 实体

    我有一个具有以下结构的数据库 CREATE TABLE entity id SERIAL name VARCHAR 255 PRIMARY KEY id CREATE TABLE entity property entity id SERI