Java 如果spring jpa中不存在列,如何将实体属性默认值标记为null

Java 如果spring jpa中不存在列,如何将实体属性默认值标记为null,java,database,postgresql,hibernate,spring-data-jpa,Java,Database,Postgresql,Hibernate,Spring Data Jpa,我遇到一种情况,即我的实体可能与具有不同列的表相关。 例如,我的实体有两个属性(A和B)。相关表可能有两个版本,一个表只有一列,另一个表有A列和B列。 所以,如果在一列表中使用实体,它将引发关于属性B的异常 我尝试使用@Transient标记B属性。在一列的情况下,它不会遇到异常。但在两列表中,由于我省略了B属性,所以缺少B列的信息 因此,我希望在一列表中,B属性可以设置为null。同样在两列表中,可以从DB中捕获B属性值 我尝试使用@MappedSuperclass创建一个基本抽象类,并创建一

我遇到一种情况,即我的实体可能与具有不同列的表相关。

例如,我的实体有两个属性(A和B)。相关表可能有两个版本,一个表只有一列,另一个表有A列和B列。 所以,如果在一列表中使用实体,它将引发关于属性B的异常

我尝试使用
@Transient
标记B属性。在一列的情况下,它不会遇到异常。但在两列表中,由于我省略了B属性,所以缺少B列的信息

因此,我希望在一列表中,B属性可以设置为null。同样在两列表中,可以从DB中捕获B属性值

我尝试使用
@MappedSuperclass
创建一个基本抽象类,并创建一个扩展基类的类。但不管我把B属性放在哪里,在基类还是扩展类中。或者,无论我使用findAll()方法还是使用@Query(原生sql查询)进行查询,它都会引发与以前相同的异常

使用findAll()时: 错误:列表.B不存在

使用@Query(本机sql查询)时:
在此结果集中找不到列名B。

如果我理解正确,则可能重复:是否将一个实体映射到两个不同的表?这在JPA中是不可能的。@SimonMartinelli,实际上只有一张表。但对于不同的版本,版本2还有一列。因此,实体的属性号与版本2相同。但在某些情况下,新实体将与Version1表一起使用,我们无法更改Version1的结构。所以我们需要一种方法,使新实体也能在版本1中运行。@Akirus,谢谢。我做了一些尝试,并更新了描述部分的结果。似乎它不起作用…那是不可能的。如果我理解正确,可能重复:您将一个实体映射到两个不同的表?这在JPA中是不可能的。@SimonMartinelli,实际上只有一张表。但对于不同的版本,版本2还有一列。因此,实体的属性号与版本2相同。但在某些情况下,新实体将与Version1表一起使用,我们无法更改Version1的结构。所以我们需要一种方法,使新实体也能在版本1中运行。@Akirus,谢谢。我做了一些尝试,并更新了描述部分的结果。似乎不起作用……那是不可能的。