Как получить время базы данных с JPQL?

Я должен не согласиться с большим количеством ответов на этот вопрос.

возможно собрать случайные данные по компьютеру. SSL, SSH и VPNs не были бы безопасны, если Вы не могли.

способ, которым работа генератора случайных чисел программного обеспечения, существует пул из случайных данных, который собран от многих различных мест, таких как дрейф часов, синхронизации прерывания, и т.д.

, прием к этим схемам находится в корректной оценке энтропия (шикарное название случайности). Не имеет значения, является ли источник предвзятостью, пока Вы оцениваете энтропию правильно.

Для иллюстрирования этого шанс того, что я поражал букву e в этом комментарии намного выше, чем что z, поэтому если бы я должен был использовать ключевые прерывания в качестве источника энтропии, то это была бы предвзятость - но существует все еще некоторая случайность, которая будет иметься в том входе. Вы не можете предсказать точно, какая последовательность букв прибудет затем в этот абзац. Можно извлечь энтропию из этой неуверенности и использовать его часть случайного байта.

Хорошее качество реально-случайные генераторы как Тысячелистнику встроили довольно сложную энтропийную оценку им и только испустит столько байтов, сколько это может надежно сказать, что имеет в ее "пуле случайности".

11
задан Pascal Thivent 30 April 2010 в 19:39
поделиться

1 ответ

В соответствии со спецификациями JSR 220: Enterprise JavaBeans 3.0 :

4.6.16 Функциональные выражения

Язык запросов Java Persistence включает следующие встроенные функции, , которые могут использоваться в Предложение WHERE или HAVING запроса .

Если значение любого аргумента для функциональное выражение равно нулю или неизвестно, значение функционала выражение неизвестно.

[...]

4.6.16.3 Функции Datetime

 functions_returning_datetime: =
 CURRENT_DATE |
 CURRENT_TIME |
 CURRENT_TIMESTAMP

Функции datetime возвращают значение текущей даты, времени и отметка времени на сервере базы данных.

Я уже удивлен, что вы можете написать вторую форму, которая не соответствует спецификации и, следовательно, может быть непереносимой.

Для меня «правильный» способ сделать это будет создать класс с полем даты типа java.util.Date и заполнить его собственным запросом. Примерно так:

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

@Entity
public class DateItem {
    private Date date;

    /**
     * @return the date
     */
    @Id
    @Column(name = "DATE_VALUE")
    @Temporal(TemporalType.TIMESTAMP)
    public Date getDate() {
        return date;
    }

    /**
     * @param date
     *            the date to set
     */
    public void setDate(Date date) {
        this.date = date;
    }
}

А затем:

@PersistenceContext
EntityManager em;

/**
 * @return System date on DB server
 */
public Date getSystemDate() {
    Query query = em.createNativeQuery(
            "SELECT CURRENT_TIMESTAMP", DateItem.class);
    DateItem dateItem = (DateItem) query.getSingleResult();
    return dateItem.getDate();
}
16
ответ дан 3 December 2019 в 07:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: