【问题标题】:Is there a way to disable fetching the entire value set for a column in Hibernate?有没有办法禁用获取 Hibernate 中列的整个值集?
【发布时间】:2019-09-08 12:45:57
【问题描述】:

在我们的“进程”表中有一个“类型”列。该列的值集在我们代码的枚举中定义。但是,此表中有过时的行。这意味着有些行的“类型”是代码枚举中不存在的值。问题是每当我们访问此表中的任何行(不是过时的行)时,我们都会收到一个错误,即该列存在未知值。有没有办法在休眠中禁用此功能,因为我们不想删除这些行。

@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;

【问题讨论】:

  • 该列是如何注释的,该列在表中究竟是如何设置的?
  • @Enumerated(EnumType.STRING) @Column(name = "TYPE_ID") 私有类型类型;这就是它在我们的“进程”表中的声明方式
  • 那只是实体,不是实际的表
  • 我更新了帖子。
  • 还是缺表

标签: java oracle hibernate jakarta-ee


【解决方案1】:

如果这些“过时”记录不再适合您的 Hibernate 数据模型,那么我建议将它们移动到某个存档表中。毕竟,现在无论如何您都无法使用 Hibernate 真正选择它们,因此至少在应用程序级别,它们没有任何用途。

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

【讨论】:

    猜你喜欢
    • 2013-07-09
    • 1970-01-01
    • 2020-10-01
    • 1970-01-01
    • 2020-08-16
    • 2018-05-07
    • 1970-01-01
    • 1970-01-01
    • 2010-11-13
    相关资源
    最近更新 更多