持久化实体 "has" 对象的成员而不是对象本身

Persist members of an object that an entity "has" rather than the object itself

作为一个最小的例子,如果我有 2 个这样的 类:

    /* A is an entity while B is not. C is another class irrelevant 
for this problem. */
        class B{
             Integer bval1;
             Double bval2;
        }

        @Entity
        class A extends C {
             @Id
             @GeneratedValue(strategy= GenerationType.AUTO)
             Integer aid;
             @column
             Double aval1;
             @???
             B b;

        }

“???”填什么(或其他地方),以便它被保存在 table 中,结构为:

aid | aval1 | bval1 | bval2

这可能还是我应该重组我的 类?

直接回答你的问题。
没有什么可以填写的???只为了达到你想要的。

如果你可以让Class B 成为@MappedSuperclass 而不是@Entity 并且让A 扩展B,你就可以实现你的目标。请注意,您还需要在 Class B @Column 中创建属性。

这样 B 就不是 @Entity 并且 class A 不需要包含 B 中的属性,哇...

更新:

根据 OP 的评论和更新的问题,恐怕答案只是不可能这样做。

你不能用任何东西替换 @??? 因为你的 pojo 只有一个主键。 显然你的问题没有解决方案。

你让classB@Embeddable。这就是可嵌入的目的。

一个 JPA 提供程序 (DataNucleus) 允许指定类似于 JPA AttributeConverter 的东西,将 B 转换为 多个 列(标准 AttributeConverter 仅转换为一列)因此,如果使用它,您可以避免将 @Embeddable 放在 B class 上。不过,这显然是供应商扩展,如果这对您很重要,那么不可移植。

除此之外,答案是否定的,你不能为所欲为。