java - 没有原始属性的复合主键

标签 java hibernate jakarta-ee composite-primary-key

我是 Java 和 Hibernate 的新手。我有复合键的问题。我正在尝试做这样的事情:

@Entity
class A {
    @Id
    int id;
}

@Entity
class B {
    @Id
    int id;
}


@Entity
class C {
    @EmbeddedId
    C_PK c_pk;
}

@Embeddable
class C_PK {
    A a;
    B b;
}

当我执行

...
session.save(c);
...

然后抛出异常,类型A和B无法插入数据库。是否有可能以某种方式告诉 hibernate 不保存 A 对象而只保存 A id?我的方法是否完全错误,我应该只在 C_PK 类中使用原始数据类型吗?

最佳答案

您应该在 C_PK 中的 A 和 B 引用上放置一个带有连接列的 @ManyToOne(或 OneToOne)。

@Embeddable
class C_PK {
    @ManyToOne
    A a;
    @ManyToOne
    B b;
}

关于java - 没有原始属性的复合主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7778264/

相关文章:

java - java中的定向DFS

mysql - Spring Hibernate事务隔离不能产生不可重复读

java - 如果 ID 已存在,则将实体与另一个实体一起保存为属性时出错

java - 构建多个maven pom文件并登录到单个文件

java - 使用 java 代码运行进程的路径名和参数

java.lang.NoClassDefFoundError : com/google/common/base/internal/Finalizer$ShutDown (wrong name: com/google/common/base/internal/Finalizer)

java - Hibernate、Postgre/MySQL 差异

java - 我可以使用 Glassfish 从多个虚拟客户端访问本地主机吗?

java - 如何在 Eclipse 中构建 Maven 项目

java - Eclipse中创建类时 'Enclosing type"是什么?