不具有原始属性的复合主键

svo*_*l13 6 java hibernate composite-primary-key jakarta-ee

我是 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;
}
Run Code Online (Sandbox Code Playgroud)

当我表演时

...
session.save(c);
...
Run Code Online (Sandbox Code Playgroud)

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

gka*_*mal 2

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

@Embeddable
class C_PK {
    @ManyToOne
    A a;
    @ManyToOne
    B b;
}
Run Code Online (Sandbox Code Playgroud)