Можно ли использовать последовательность DB для некоторого столбца, что не является идентификатором/не является частью составного идентификатора?
Я использую hibernate как поставщик jpa, и у меня есть таблица с несколькими столбцами, которые генерируют значения (используя последовательность), хотя они не являются частью идентификатора.
Я хочу использовать последовательность для создания нового значения для сущности, где столбец последовательности НЕ (часть) первичного ключа:
@Entity
@Table(name = "MyTable")
public class MyEntity {
//...
@Id //... etc
public Long getId() {
return id;
}
//note NO @Id here! but this doesn't work...
@GeneratedValue(strategy = GenerationType.AUTO, generator = "myGen")
@SequenceGenerator(name = "myGen", sequenceName = "MY_SEQUENCE")
@Column(name = "SEQ_VAL", unique = false, nullable = false, insertable = true, updatable = true)
public Long getMySequencedValue(){
return myVal;
}
}
Тогда, когда я это сделаю:
em.persist(new MyEntity());
идентификатор будет сгенерирован, но свойство mySequenceVal
также будет создано моим поставщиком JPA.
Просто, чтобы все было ясно: я хочу Hibernate генерировать значение для свойства mySequencedValue
. Я знаю, что Hibernate может обрабатывать значения, созданные с помощью базы данных, но я не хочу использовать триггер или любую другую вещь, кроме самого Hibernate, для генерации значения для моего свойства. Если Hibernate может генерировать значения для первичных ключей, почему он не может генерировать для простого свойства?