Java hibernate with Postgres:ids的未知整型数据类型

Java hibernate with Postgres:ids的未知整型数据类型,java,postgresql,hibernate,sequential,Java,Postgresql,Hibernate,Sequential,我有一个带有Id序列的postgres表 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, ) ;

我有一个带有Id序列的postgres表

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”的Id,并且可以与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]
当我从代理选择下一个序列时,我得到一个数字,仅供参考。
有什么想法吗?

如果您将列代理ID更改为varchar,是否有效?我将尝试将列转换为VARCHAR@InsertKnowledge不,我也有同样的错误,也许Hibernate假设ID总是数字。(顺便说一句:使用
char()
varchar
text
相比没有任何优势)