Я просто хочу автоинкрементное поле для 1 объекта.
Да, я понял, это то, что вы написали в своем вопросе. Но это может быть истолковано несколькими способами, и повторение одного и того же без разъяснений не сильно помогает:)
Так как работает Паскаль, или я должен сделать то, что предлагает Байт-код, запросить счетчик выбора (макс) + 1 из MyEntity, чтобы получить следующее значение, а затем установить его в поле дизайна, постоянное значение?
Если вы хотите увеличить поле для каждой записи сущности (например, «счетчик» для Order
с id = 1, еще один для Order
с id = 2), то я предложил бы работа.
Если вам нужно поведение, аналогичное первичному ключу (т. Е. Автоинкрементный столбец ), этого не произойдет. И в этом случае стандартный JPA не предлагает какой-либо конкретной функции (стандартный JPA допускает только GenereatedValue
в Id
аннотированном поле). Единственный способ, о котором я могу подумать, - это вставить другую выделенную сущность, чтобы получить от нее первичный ключ.
Точное требование неясно, но я предполагаю, что вы говорите о случайном поле, а не о первичном ключе. В этом случае вы можете использовать методы обратного вызова жизненного цикла:
@Entity
public class MyEntity {
...
private int counter;
...
@PrePersist
@PreUpdate
protected void increment() {
counter = counter + 1;
}
}