спящий режим с Postgres: неизвестный тип данных для идентификаторов - PullRequest
0 голосов
/ 17 февраля 2020

У меня есть таблица postgres с последовательностью Id

CREATE SEQUENCE AGENT_SEQU;
CREATE TABLE AGENT (
    AGENT_ID   CHAR(10) PRIMARY KEY DEFAULT 'AGT'||to_char(nextval('AGENT_SEQU'), 'FM000000'),
    FIRSTNAME  VARCHAR(60)     NOT NULL,
    LASTNAME   VARCHAR(60)     NOT NULL,
) ;
ALTER SEQUENCE AGENT_SEQU OWNED BY AGENT.AGENT_ID;

Идея этой последовательности заключается в том, что для каждой вставки я получаю идентификатор, подобный AGT000002, и прекрасно работает со вставкой sql , У меня также есть сущность агента, подобная этой

@Entity
@Table (name = "AGENT")
@Data
public class AgentEntity {

    @Id
    @SequenceGenerator(name="pk_sequence", sequenceName="AGENT_SEQU", allocationSize=1)
    @GeneratedValue(strategy=GenerationType.SEQUENCE,generator="pk_sequence")
    @Column(name = "AGENT_ID")
    private String id;

    @Column(name = "FIRSTNAME")
    private String firstName;

    @Column(name = "LASTNAME")
    private String lastName;

}

Когда я пытаюсь сохранить сущность, у меня возникает следующее исключение:

org.hibernate.id.IdentifierGenerationException: Unknown integral data type for ids : java.lang.String
    at org.hibernate.id.IdentifierGeneratorHelper.getIntegralDataTypeHolder(IdentifierGeneratorHelper.java:224) ~[hibernate-core-5.4.8.Final.jar:5.4.8.Final]
    at org.hibernate.id.enhanced.SequenceStructure$1.getNextValue(SequenceStructure.java:98) ~[hibernate-core-5.4.8.Final.jar:5.4.8.Final]
    at org.hibernate.id.enhanced.NoopOptimizer.generate(NoopOptimizer.java:40) ~[hibernate-core-5.4.8.Final.jar:5.4.8.Final]
    at org.hibernate.id.enhanced.SequenceStyleGenerator.generate(SequenceStyleGenerator.java:520) ~[hibernate-core-5.4.8.Final.jar:5.4.8.Final]
    at org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:120) ~[hibernate-core-5.4.8.Final.jar:5.4.8.Final]
    at org.hibernate.event.internal.DefaultPersistEventListener.entityIsTransient(DefaultPersistEventListener.java:192) ~[hibernate-core-5.4.8.Final.jar:5.4.8.Final]
    at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:135) ~[hibernate-core-5.4.8.Final.jar:5.4.8.Final]
    at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:62) ~[hibernate-core-5.4.8.Final.jar:5.4.8.Final]
    at org.hibernate.event.service.internal.EventListenerGroupImpl.fireEventOnEachListener(EventListenerGroupImpl.java:108) ~[hibernate-core-5.4.8.Final.jar:5.4.8.Final]
    at org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:702) ~[hibernate-core-5.4.8.Final.jar:5.4.8.Final]
    at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:688) ~[hibernate-core-5.4.8.Final.jar:5.4.8.Final]
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na]
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
    at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na]
    at org.springframework.orm.jpa.ExtendedEntityManagerCreator$ExtendedEntityManagerInvocationHandler.invoke(ExtendedEntityManagerCreator.java:368) ~[spring-orm-5.2.1.RELEASE.jar:5.2.1.RELEASE]
    at com.sun.proxy.$Proxy111.persist(Unknown Source) ~[na:na]

Просто для информации, когда я выбираю следующую последовательность из AGENT_SEQU I получить номер. Есть идеи?

...