orm.xml 中的命名本机查询映射

时间:2021-03-16 06:22:22

标签: spring-boot hibernate hibernate-mapping

我对 Hibernate 非常陌生。我正在尝试将基本 SQL 查询外部化为 orm.xml

我的查询

SELECT CURRENT_TIMESTAMP  FROM DUAL

我尝试了以下:

<named-native-query 
    name="JobTrackerEntity.getCurrentTimestamp"
    result-class="java.sql.Timestamp">
    <query>
        SELECT CURRENT_TIMESTAMP  FROM DUAL
    </query>
</named-native-query>

但我收到以下错误:

org.hibernate.MappingException: Unknown entity: java.sql.Timestamp

请告诉我如何在 orm.xml 中编写查询。另外,如果我可以参考任何资源以获得更好的理解。


更新:

我在存储库接口中添加了一个方法如下:

@Repository
public interface TrackerRepository extends JpaRepository<TrackerEntity, TrackerId> {

    @Query(nativeQuery=true)
    Timestamp getCurrentTimestamp();
}

我正在调用 getCurrentTimestamp() 来执行查询。

1 个答案:

答案 0 :(得分:1)

您必须删除 result-class="java.sql.Timestamp",因为结果类属性必须是实体。

编辑:

CURRENT_TIMESTAMP 导致 Hibernate 方言中缺少映射。您必须提供自己的方言,或者如果您不需要最好使用的时区:

SELECT LOCALTIMESTAMP FROM DUAL
相关问题