有没有办法禁止在 Hibernate 中获取列的整个值集?

Is there a way to disable fetching the entire value set for a column in Hibernate?

在我们的 "Process" table 中有一个 "Type" 列。此列的值集在我们的代码中的枚举中定义。但是,此 table 中有过时的行。这意味着有些行 "type" 是代码枚举中不存在的值。问题是每当我们访问此 table 中的任何行(不是过时的行)时,我们都会收到一条错误消息,指出该列存在未知值。有没有办法在休眠中禁用此功能,因为我们不想删除这些行。

@EqualsAndHashCode(callSuper = true, of = {})
@Table(name = ProcessEntity.TABLE_NAME)
public class ProcessEntity extends BaseEntity implements ValidityHolder {
public static final String TABLE_NAME = "PROCESS";

@OneToMany(mappedBy = "consent", cascade = CascadeType.ALL)
private Set<ConsentAnswerEntity> consentAnswers;

@OneToMany(mappedBy = "consent", cascade = CascadeType.ALL)
private List<ProcessConsentEntity> processConsents;

@OneToMany(mappedBy = "consent", cascade = CascadeType.ALL)
private Set<ProcessTypeConsentEntity> processTypeConsents;

@Enumerated(EnumType.STRING)
@Column(name = "TYPE_ID")
private Type TpyeId;

如果这些 "obsolete" 记录不再适合您的 Hibernate 数据模型,那么我建议将它们移动到某个存档 table。毕竟,现在无论如何都无法使用 Hibernate select 它们,因此至少在应用程序级别,它们毫无用处。

有关在不物理删除记录的情况下逻辑删除记录的更通用方法,请查看软删除。使用软删除,您可以将单个布尔列添加到 table,如果标记,则表明该记录在逻辑上不再存在。