Являются ли JPA идентификаторы последовательными - PullRequest
2 голосов
/ 19 марта 2012

Платформа Play создает Id для сущностей, которые расширяют класс модели следующим образом:

@MappedSuperclass
public class Model extends GenericModel {

    @Id
    @GeneratedValue
    public Long id;

    public Long getId() {
        return id;
    }

    @Override
    public Object _key() {
        return getId();
    }

}

Можно ли использовать этот идентификатор (максимальный идентификатор) для определения последней созданной записи?

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

Я не хочу добавлять столбец времени создания, поскольку таблица уже огромна.

1 Ответ

4 голосов
/ 19 марта 2012

Значение по умолчанию strategy() для @GeneratedValue равно GenerationType.AUTO.Определение:

Указывает, что поставщик сохраняемости должен выбрать подходящую стратегию для конкретной базы данных.Стратегия генерации AUTO может ожидать, что ресурс базы данных будет существовать, или он может пытаться создать его.Поставщик может предоставить документацию о том, как создать такие ресурсы, если он не поддерживает создание схемы или не может создать ресурс схемы во время выполнения.

Таким образом, это зависит от используемой вами базы данных.Если вы используете GenerationType.IDENTITY, некоторые поставщики баз данных используют какое-то значение "auto_increment".По крайней мере, это верно для MySQL.Если вы используете MySQL с GenerationType.IDENTITY, вы можете использовать max(id) для определения последней созданной записи.Для получения дополнительной информации, я бы проверил спецификацию вашей базы данных.

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