提问人:stackMan10 提问时间:1/17/2020 更新时间:1/17/2020 访问量:804
SQLGrammarException:无法提取 ResultSet:因为关系不存在
SQLGrammarException: could not extract ResultSet : as relation does not exist
问:
使用序列生成器时,我遇到带有 postgres DB 的 spring boot 异常。
下面是堆栈跟踪
2020-01-17 15:54:10 - SQL Error: 0, SQLState: 42P01
2020-01-17 15:54:10 - ERROR: relation "predefmapping_seq" does not exist
Position: 17
2020-01-17 15:54:13 - Error adding tags to the DB:
javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not
extract ResultSet
at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:149) ~
[hibernate-core-5.2.17.Final.jar!/:5.2.17.Final]
at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:157) ~
[hibernate-core-5.2.17.Final.jar!/:5.2.17.Final]
at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:164) ~
[hibernate-core-5.2.17.Final.jar!/:5.2.17.Final]
at org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:790) ~[hibernate-core-
5.2.17.Final.jar!/:5.2.17.Final]
at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:768) ~[hibernate-core-
5.2.17.Final.jar!/:5.2.17.Final]
at sun.reflect.GeneratedMethodAccessor118.invoke(Unknown Source) ~[na:na]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~ [na:1.8.0_232]
下面是为其添加序列的 Entinty 类列。
@Id
@SequenceGenerator(name="PREDEFMAPPING_SEQ", sequenceName="PREDEFMAPPING_SEQ",initialValue = 1, allocationSize=1)
@GeneratedValue(strategy = GenerationType.AUTO ,generator="PREDEFMAPPING_SEQ")
@Column(name = "ID")
private long id;
请注意,这已经过 db2、oracle 和 mssql 的测试。但是,对于postgres,它给了我上述例外。
postgres db 表中的序列名称是“predefmap_seq”,而不是实体中的“PREDEFMAPPING_SEQ”。
大多数解决方案建议我将生成策略更改为 IDENTITY,但是我想要一个适用于所有(db2、oracle、mssql 和 postgres)的解决方案
答: 暂无答案
评论
sequenceName="predefmapping_seq"
identity