Java JPA-继承具有相同字段名的类会导致保存中出现异常

Java JPA-继承具有相同字段名的类会导致保存中出现异常,java,mysql,spring,jpa,spring-data-jpa,Java,Mysql,Spring,Jpa,Spring Data Jpa,我们有一个基类-base,有3个继承类-ChildA、ChildB、ChildC。 所有类都是jpa实体,使用一个判别列 ChildA和ChildB都有同名字段,而ChildC没有: 私人Long longField(可为空) 因此,当我们尝试将ChildA实例保存到DB时: this.childARepository.save(新建ChildA(…) 我们得到以下例外情况: Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorE

我们有一个基类-base,有3个继承类-ChildA、ChildB、ChildC。 所有类都是jpa实体,使用一个判别列

ChildA和ChildB都有同名字段,而ChildC没有:

私人Long longField(可为空)

因此,当我们尝试将ChildA实例保存到DB时:

this.childARepository.save(新建ChildA(…)

我们得到以下例外情况:

Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'longField' in 'field list'
我们可以想出几个变通办法,但在这种情况下,没有一个是非常好的:

1) 将
longField
放在Base中-没有意义,因为ChildC不需要它

2) 为ChildA和ChildB创建另一个基类-从抽象的角度看没有意义

3) 在ChildA&ChildB中使用不同的名称-尝试过之后,效果很好,但我们不希望这样做,因为它具有相同的含义

这个问题还有别的解决办法吗?也许我们错过了什么?
谢谢

这里有这么多未回答的问题。。。1) 您对继承层次结构使用哪种映射?每班一张桌子?鉴别器列?2) 我知道你不想,但你试过一些变通方法吗?在ChildB中为字段指定一个不同的名称,然后看看会发生什么?换句话说,你确定这是因为A和B有一个同名的字段吗?请参见我的编辑,但是:1)区分栏2)是的,我尝试更改了名称,解决了您没有显示继承设置的问题。为什么用于A的表格没有“longfield”?如果有,那么问题在于您的映射以及如何设置继承-显示映射以及它如何指定与ChildATwo建议相关的表;选择一个:1)将
longField
映射到数据库中的不同列。请注意,这并不意味着您必须更改Java类中字段的名称。如果两个类中的
longField
不是完全相同的东西,那么这就更有意义了。2) 如果两个类中的
longField
完全相同,则创建一个
Base2
类,该类继承自
Base1
,其中包含
longField
。然后
ChildA
ChildB
继承自
Base2
,而
ChildC
继承自原始
Base