Именованный запрос возвращает java. sql .Timestamp вместо java .util.Date - PullRequest
0 голосов
/ 08 мая 2020

Я использую Hibernate 5.3.13

Я запрашиваю дату с помощью именованного запроса:

    public Date getDate() {
        return entityManager.createNamedQuery("MyEntity.myNamedQuery", Date.class)
                            //setting some parameters here
                            .getSingleResult();
    }

Определение столбца:

    @Column(name="date")
    @Temporal(TemporalType.TIMESTAMP)
    private Date date;

Это запрос работает нормально, но спящий режим возвращает java. sql .Timestamp, когда я хочу java .util.Date.

Можно ли сделать возврат даты гибернации вместо метки времени?

1 Ответ

1 голос
/ 08 мая 2020

Взято из Hibernate - Дата и время сопоставления :

Как мы видели, тип java .util.Date (миллисекунды precision) недостаточно точен для обработки значения Timestamp (точность в наносекундах).

Поэтому, когда мы извлекаем объект из базы данных, мы, что неудивительно, найдем экземпляр java. sql .Timestamp в этом поле, даже если мы изначально сохраняли java .util.Date:

[...]

Это должно быть хорошо для нашего кода, поскольку Timestamp расширяет Date.

Вы можете просто преобразовать возвращаемое значение в Date.

Ознакомьтесь со ссылкой в ​​целом, в ней есть более подробная информация для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...