Можно ли использовать последовательность БД для некоторого столбца, который не является идентификатором / не является частью составного идентификатора ?
Я использую 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 может генерировать значения для первичных ключей, почему он не может генерировать для простого свойства?