【问题标题】:Hibernate Annotation Formula NullPointer Exception or invalid identifier errorsHibernate Annotation Formula NullPointer 异常或无效标识符错误
【发布时间】:2013-09-25 00:52:20
【问题描述】:

我试图在我的一个实体类中使用@Formula。 我需要做的是从另一个实体中选择一个布尔值。

我试图放置属性定义,但发布时它一直抛出 NullPointerException,我这样做如下

@JoinColumn(name = "SOIR08_FECHA_CARGA", referencedColumnName = "SOIR15_CODI_FECHA", nullable = true)
@ManyToOne(fetch = FetchType.EAGER)
private FechaCarga loadDate;

@JoinColumn(name = "SOIR08_RECEPTOR", referencedColumnName = "SOIR05_CON_DISTRITO_TELEFONICO", nullable = true)
@ManyToOne(optional = true, fetch = FetchType.EAGER)
private DistrictPhone receiver;

@Formula("(select io.done from Table io where io.district = receiver and io.loadDate = loadDate)")
private Boolean isDone;

然后我尝试将 @Formula 注释放在 getter 中

@Formula("(select io.done from Table io where io.district = receiver and io.loadDate = loadDate))")
public Boolean getIsDone() {
    return isDone;
}

但是当我访问必须显示属性的页面时,我得到 ORA-00904: "APROB0_"."ISDONE": invalid identifier

任何想法、建议或解决方法都将受到高度赞赏。

【问题讨论】:

    标签: hql formula hibernate-annotations


    【解决方案1】:

    你必须在@Formula中写纯SQL(但不是HQL)。

    【讨论】:

    • 我做到了,我试过 @Formula("select io.SOIR21_DONE from SOIR21_INFRAESR_OPTIMI io where io.SOIR21_DISTRITO_TELEFONICO = SOIR08_RECEPTOR and io.SOIR21_FECHA_CARGA = SOIR08_FECHA_CARGA") 但它一直在发生
    • @Malincy Montoya 尝试将Boolean isDone 重命名为Boolean done。你不应该调用以“is, set, get etc.”开头的变量名。
    • 我做了,但我继续收到错误。快速解决它很重要,所以我做了一个解决方法。谢谢
    【解决方案2】:

    我找不到在不出错的情况下使用此注释的方法。 我决定做的是在表格中添加一列,并在插入时填充它,这不是最好的方法,但我需要快速完成,并且论坛上没有什么对我有用。 谢谢。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-06-29
      • 2014-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多