gpt4 book ai didi

java - 处理@DiscriminatorColumn 中的 NULL 值

转载 作者:行者123 更新时间:2023-11-29 09:09:08 24 4
gpt4 key购买 nike

我有一个遗留的 MS SQL Server 2000 数据库,我正在尝试使用 JPA(准确地说是 EclipseLink)进行映射。

我有一个表“CONTACT1”,其中的文本字段“KEY1”可以是“联系人”或“ Assets ”,我正在使用:

@Table(name = "CONTACT1")
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(discriminatorType = DiscriminatorType.STRING, name = "KEY1")
public abstract class Record {

将其映射到两个不同的类(联系人和 Assets )。

@Entity
@DiscriminatorValue(value = "Contact")
public class Contact extends Record {...}

@Entity
@DiscriminatorValue(value = "Asset")
public class Asset extends Record {...}

不幸的是我发现了一些或者记录丢失了,经过进一步分析我发现一些联系人记录的“KEY1”字段设置为NULL。

虽然我可以运行更新查询来解决问题,但我想避免这种情况 - 有没有办法将“NULL”值映射到 Contact 类?

如果做不到这一点,JPA 中是否有一种机制可以让我预过滤记录集,使 JPA 相信该字段不是 NULL,但其中写入了“联系人”?

最佳答案

您需要运行更新并为数据库中具有空值的行分配正确的值。我还建议您修改数据库中的列定义并为其设置默认值,以防止将来出现空值。

或者不要使用@DiscriminatorColumn。根据我的经验,它往往会增加比其值(value)更多的复杂性和错误。

关于java - 处理@DiscriminatorColumn 中的 NULL 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13288917/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com