Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.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 在JoinColumns中使用的列的EclipseLink默认值_Java_Jpa_Eclipselink - Fatal编程技术网

Java 在JoinColumns中使用的列的EclipseLink默认值

Java 在JoinColumns中使用的列的EclipseLink默认值,java,jpa,eclipselink,Java,Jpa,Eclipselink,我有一段代码: @Entity @Table(name = "MOVERS") public class MOVers implements Serializable { @OneToOne(fetch = FetchType.LAZY) @JoinColumns({ @JoinColumn(name = "X1077_69_EDECESSOR", referencedColumnName = "CLASSID"), @JoinColumn(name = "X10

我有一段代码:

@Entity
@Table(name = "MOVERS")
public class MOVers implements Serializable {
    @OneToOne(fetch = FetchType.LAZY)
    @JoinColumns({
    @JoinColumn(name = "X1077_69_EDECESSOR", referencedColumnName = "CLASSID"),
    @JoinColumn(name = "X1077_70_EDECESSOR", referencedColumnName = "ID")})
    private MOVers predecessor;
}
数据库不应具有空值。如果创建的版本是第一个版本,则它不应具有前置版本,并且列(X1077_69_EDECESSOR、X1077_70_EDECESSOR)应等于0。出于这个原因,我考虑过创建虚拟对象,但这是不可能的,因为其他一些列必须是唯一的


如何使用EclipseLink来实现这一点?

我假设数据库中没有外键设置,因为insert 0将无法满足此约束。奇怪的是,您有一个NOTNULL约束,但没有外键约束。最好修复数据库,因为它的设计不正确


如果无法设置id为0的空根,则可以将联接列设为insertable/updateable=false,并定义要写入列的基本字段,这样就可以控制它们在模型中的值。设置前置项时,您需要设置基本字段,如果没有前置项,则将其默认为0。

数据库没有任何外键,并且此数据库用于其他不理解空字段的持久性API应用程序。当我向新对象的创建阶段添加更新语句(如下面的语句)时,我解决了这个问题:

SET X1077_69_EDECESSOR = 0, X1077_70_EDECESSOR = 0, WHERE ID = :moversid
在这种情况下,新对象使用空字段创建,然后将其更新为0值