Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 持久化包含实体的对象的成员;有",;而不是对象本身_Java_Mysql_Jpa_Jpa 2.0 - Fatal编程技术网

Java 持久化包含实体的对象的成员;有",;而不是对象本身

Java 持久化包含实体的对象的成员;有",;而不是对象本身,java,mysql,jpa,jpa-2.0,Java,Mysql,Jpa,Jpa 2.0,举个简单的例子,如果我有两个这样的类: /* 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 {

举个简单的例子,如果我有两个这样的类:

    /* 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;

        }
我应该在“?”(或其他地方)填入什么内容,以便将其保存在具有以下结构的表中:

aid | aval1 | bval1 | bval2

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

直接回答您的问题。
没有什么你可以填写的???只是为了实现你想要的

如果您可以使类B成为@MappedSuperclass而不使其成为@Entity,并使其成为扩展B,那么您就可以实现您的目标。注意,您还需要在Class B@Column中创建属性

这样,B就不是@实体,类A不需要包含B中的属性,所以

更新:
根据OP的评论和更新的问题,我担心答案是不可能这样做。

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

你让B类
@可嵌入
。这就是嵌入式的用途

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


除此之外,答案是不,你不能做你想做的事。

啊,我不想/不能让它继承B,因为在我的实际问题中,A已经继承了C。@VivekVK好吧,我恐怕答案只是不可能。是的,这也是我的感受。发了这篇文章,想知道是否有我不知道的方法。让我等一会儿,如果没有其他人提出解决方案,我将结束这个问题。你介意把你最后的评论作为你文章的一部分吗?谢谢你的添加!酷@可嵌入似乎是我想要的。谢谢