如何解决在postgres和Hibernate中将序列用作主键时出错
我正在使用JPA / Hibernate和postgres作为我的数据库
我在postgres中创建了这样的序列:
CREATE SEQUENCE player_sequence
INCREMENT 20
START 1;
我希望Hibernate将上述序列用作主键。
实体的id部分为:
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE,generator = "player_seq")
@SequenceGenerator(name = "player_seq",sequenceName = "player_sequence",allocationSize = 20)
private Integer id;
当我创建一个新播放器并尝试通过EntityManger.persist
方法保存它时,出现以下错误:
休眠:从player_sequence中选择next_val作为id_val进行更新 org.hibernate.id.enhanced.TableStructure $ 1 $ 1执行 错误:无法读取hi值 org.postgresql.util.PSQLException:错误:列“ next_val”不存在
我不明白我做错了什么
编辑:
这是persistence.xml的内容:
解决方法
尝试通过以下方式更正您的persistence.xml
:
<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence
http://xmlns.jcp.org/xml/ns/persistence/persistence_2_2.xsd"
version="2.2">
<persistence-unit name="my-persistence-unit">
<description>...</description>
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<properties>
<!-- It was wrong !!! -->
<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQL10Dialect" />
<property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver" />
<property name="javax.persistence.jdbc.url" value="jdbc:postgresql://localhost:5432/basketball" />
<property name="javax.persistence.jdbc.user" value="postgres" />
<property name="javax.persistence.jdbc.password" value="1234" />
<property name="hibernate.show_sql" value="true" />
</properties>
</persistence-unit>
</persistence>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。