Сохранение объектов без идентификатора, собственная стратегия генерацииJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Сохранение объектов без идентификатора, собственная стратегия генерации

Сообщение Anonymous »

Вот цель: мне нужно, чтобы ключи автоматически увеличивались следующим образом: «p1», «p2» и т. д. Postgres не может иметь такие последовательности, поэтому я установил такое значение по умолчанию (я опускаю ненужные столбцы):

Код: Выделить всё

-- schema.sql

CREATE SEQUENCE p_sequence;

CREATE TABLE product
(
id                      VARCHAR(100) DEFAULT 'p' || nextval('p_sequence'),
PRIMARY KEY (id)
);

Код: Выделить всё

package com.example.productapi.data.entity;

import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import lombok.Getter;
import lombok.Setter;

@Entity
@Getter
@Setter
public class Product {
@Id
@Column(name = "id")
private String productId;
}
Вот и возникает проблема: когда пользователь достигает конечной точки POST и пытается сохранить объект без идентификатора, Hibernate выдает исключение IdentifierGenerationException (которое затем транслируется Spring). Это потому, что он не позволяет сохранять объекты без идентификаторов, если не существует какой-либо стратегии @GeneratedValue. Это не SEQUENCE, поскольку я не полностью полагаюсь на последовательность. Было бы неплохо, если бы Hibernate расслабился и просто доверял БД (которая предоставила бы значение по умолчанию). Однако этого не произойдет.
Каковы обходные пути для этого?

Подробнее здесь: https://stackoverflow.com/questions/791 ... n-strategy
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»