相关疑难解决方法(0)

我应该使用哪个注释:@IdClass或@EmbeddedId

JPA(Java持久性API)规范有2名不同的方式来指定实体组合键:@IdClass@EmbeddedId.

我在我的映射实体上使用了两个注释,但对于那些不熟悉的人来说,结果却是一团糟JPA.

我想只采用一种方法来指定复合键.哪一个真的最好?为什么?

java annotations jpa java-persistence-api

120
推荐指数
6
解决办法
8万
查看次数

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

我是 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 类中使用原始数据类型吗?

java hibernate composite-primary-key jakarta-ee

6
推荐指数
1
解决办法
1167
查看次数

JPA/Hibernate和复合键

我遇到了一些SO讨论和其他帖子(例如这里,这里这里),其中使用复合主键与JPA被描述为可能的情况下要避免的事情,或者由于遗留数据库或具有"毛茸茸的"而需要角落案件.既然我们从头开始设计一个新的数据库并且没有任何遗留问题需要考虑,建议还是让我们说更安全,以避免使用JPA(HibernateEclipseLink?)的复合主键.

我自己的感觉是,由于JPA引擎足够复杂,当然,就像所有软件一样,并非没有错误,最好是遭受非规范化的表,而不是忍受与复合主键相关的错误运行的恐怖(理由)因为数字单列主键和外键是JPA引擎支持的最简单的用例,所以它应该尽可能没有错误).

jpa composite-primary-key

4
推荐指数
1
解决办法
3266
查看次数