【问题标题】:getting single date value from table using hibernate使用休眠从表中获取单个日期值
【发布时间】:2020-05-21 06:50:58
【问题描述】:

我正在尝试对 db2 数据库执行完整性检查,所以我写道:

Session session = _sessionFactory.openSession();

try{
    return session.createNativeQuery("SELECT CURRENT DATE from sysibm.sysdummy1", Date.class)
                            .stream().findFirst().orElse(null);
}
catch (Exception e){
    session.close();
    throw e;
}

其中Date 的类型为java.sql.Date

我什至尝试将此节点添加到hibernate.cfg.xml 文件中:

<mapping class="java.sql.Date"/>

查询本身工作正常,并返回标记为“1”的“列”,其中单行日期为 yyyy-MM-dd 格式。
但是,当我执行代码时出现错误:

org.hibernate.MappingException:未知实体:java.sql.Date

我错过了什么吗?

【问题讨论】:

  • 我认为我们不能将java.sql.Date 用作ORM 目的的实体。这可以帮助stackoverflow.com/questions/513317/…
  • @ArunSudhakaran 我是 java 菜鸟,所以我可能是错的,但是 .createNativeQuery() 应该按原样获取查询,而不是 HQL。此外,我希望它更像是一个休眠配置问题。
  • 是的,这就是我所说的java.sql.Date 是来自java.sql 包的一个类,你不能修改它,所以你不能把它作为一个映射类。您应该定义一个具有属性的类,这些属性应该映射到配置文件中的表列。您可以阅读本教程tutorialspoint.com/hibernate/hibernate_configuration.htm
  • @ArunSudhakaran 对不起,如果这个问题太愚蠢了,但我真的需要创建 POJO 类来从一列中获取单个值吗?
  • @ArunSudhakaran 我试图创建名为“Single Date”的类,其中包含,猜想是什么,名为 date 的单个属性,映射到列“DATE”。然后我将查询更改为“按日期”接收数据,将“model.mappings.SingleDate”添加到 cfg.xml 文件中,现在我收到“未知实体:model.mappings.SingleDate”

标签: java hibernate


【解决方案1】:

回答: 我所做的事情是如此丑陋,我希望它不会起作用,但它确实起作用了。我已经创建了类:

@Entity
@Table
public class SingleDate {
    @Id
    private int id;
    private Date date;

    @Basic
    @Column(name = "DATE")
    public Date getDate() {
        return date;
    }
}

并执行:

    return session.createNativeQuery("SELECT 1 as ID, CURRENT DATE as DATE from sysibm.sysdummy1", SingleDate.class)
        .stream().findFirst().map(x -> x.getDate().toString()).orElse(null);

【讨论】:

    猜你喜欢
    • 2021-07-22
    • 1970-01-01
    • 2018-10-19
    • 2016-07-24
    • 1970-01-01
    • 2012-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多