- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 Hibernate 的新手,现在我正在尝试使用 @CollectionId
使用“sequence-gen”hibernate 序列生成器为我的类 HobbyDetails 生成标识符。下面是我的 StudentDetails
类,其中包含一组 HobbyDetails
。
@Entity
public class StudentDetails {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int studentId;
private String studentName;
@ElementCollection
@JoinTable(name = "STUDENT_HOBBIES", // customised table name
joinColumns = @JoinColumn(name = "STUDENT_ID"))
@GenericGenerator(name = "sequence-gen", strategy = "sequence")
@CollectionId(columns = { @Column(name="HOBBY_ID") }, generator = "sequence-gen", type = @Type(type="long"))
private Collection<HobbyDetails> hobbies = new ArrayList<HobbyDetails>();
public int getStudentId() {
return studentId;
}
public void setStudentId(int studentId) {
this.studentId = studentId;
}
public String getStudentName() {
return studentName;
}
public void setStudentName(String studentName) {
this.studentName = studentName;
}
public Collection<HobbyDetails> getHobbies() {
return hobbies;
}
public void setHobbies(Collection<HobbyDetails> hobbies) {
this.hobbies = hobbies;
}
}
但是当我运行测试时出现错误,
ERROR: ERROR: relation "sequence-gen" does not exist
Position: 17
Jul 01, 2018 6:31:47 PM org.hibernate.internal.ExceptionMapperStandardImpl mapManagedFlushFailure
ERROR: HHH000346: Error during managed flush [org.hibernate.exception.SQLGrammarException: could not extract ResultSet]
Exception in thread "main" javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not extract ResultSet
at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:149)
at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:157)
at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:164)
at org.hibernate.internal.SessionImpl.doFlush(SessionImpl.java:1460)
at org.hibernate.internal.SessionImpl.managedFlush(SessionImpl.java:511)
at org.hibernate.internal.SessionImpl.flushBeforeTransactionCompletion(SessionImpl.java:3278)
at org.hibernate.internal.SessionImpl.beforeTransactionCompletion(SessionImpl.java:2474)
at org.hibernate.engine.jdbc.internal.JdbcCoordinatorImpl.beforeTransactionCompletion(JdbcCoordinatorImpl.java:473)
at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl.beforeCompletionCallback(JdbcResourceLocalTransactionCoordinatorImpl.java:178)
at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl.access$300(JdbcResourceLocalTransactionCoordinatorImpl.java:39)
at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl$TransactionDriverControlImpl.commit(JdbcResourceLocalTransactionCoordinatorImpl.java:271)
at org.hibernate.engine.transaction.internal.TransactionImpl.commit(TransactionImpl.java:98)
at org.hibernate.test.HibernateTest.main(HibernateTest.java:82)
Caused by: org.hibernate.exception.SQLGrammarException: could not extract ResultSet
at org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:106)
at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:42)
at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:111)
at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:97)
at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:69)
at org.hibernate.id.enhanced.SequenceStructure$1.getNextValue(SequenceStructure.java:95)
at org.hibernate.id.enhanced.NoopOptimizer.generate(NoopOptimizer.java:40)
at org.hibernate.id.enhanced.SequenceStyleGenerator.generate(SequenceStyleGenerator.java:482)
at org.hibernate.collection.internal.PersistentIdentifierBag.preInsert(PersistentIdentifierBag.java:376)
at org.hibernate.persister.collection.AbstractCollectionPersister.recreate(AbstractCollectionPersister.java:1291)
at org.hibernate.action.internal.CollectionRecreateAction.execute(CollectionRecreateAction.java:50)
at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:604)
at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:478)
at org.hibernate.event.internal.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:356)
at org.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:39)
at org.hibernate.internal.SessionImpl.doFlush(SessionImpl.java:1454)
... 9 more
Caused by: org.postgresql.util.PSQLException: ERROR: relation "sequence-gen" does not exist
Position: 17
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2433)
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2178)
我正在使用 hibernate 版本 5.3.1。谁能帮忙?
最佳答案
这是因为 PostgreSQL 数据库中不存在名为“sequence-gen”的序列生成器。您需要通过运行以下命令显式创建序列
CREATE SEQUENCE sequence-gen;
连字符 (-) 符号将在 PostgreSQL 数据库中产生语法错误。因此,您需要重命名您的 GenericGenerator。
@GenericGenerator(name = "sequence_gen", strategy = "sequence")
@CollectionId(columns = { @Column(name="HOBBY_ID") }, generator = "sequence_gen", type = @Type(type="long"))
private Collection<HobbyDetails> hobbies = new ArrayList<HobbyDetails>();
此外,您需要在 PostgreSQL 数据库中运行以下命令才能生成生成器。
CREATE SEQUENCE sequence_gen;
关于java - 组织.postgresql.util.PSQLException : ERROR: relation "sequence-gen" does not exist,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51123600/
我在测试中期望 PSQLException: @Test(expected = org.postgresql.util.PSQLException.class) public void whenAdd
我正在使用 Tomcat 6 和 Postgresql 8.4。我的代码如下所示: try { // Prepared statement inserting something... } cat
嗨!我们使用 Postgres 作为现有应用程序的新数据库。这个问题是最近我们从 mysql 数据库迁移到 postgres 后出现的。迁移到 postgres 后,eclipse BIRT 报告开始
我开发了一个 API 服务,可以将一些数据添加到数据库中。我为实体的 name 字段设置了唯一约束。每当我尝试插入重复的 name 值时,我都会给出以下堆栈跟踪。 Caused by: org.pos
我尝试使用 Postman 将等同于类 Album 的 json 保存到 Postgres。我在 Postgres 中为 Album 类和 Album 类的嵌入对象创建了两个实体 - Duration
更新:我从问题中排除了 Hibernate。我完全修改了问题描述以尽可能简化它。 我有带 noop 触发器的 master 表和 detail 表,master 和 detail 表之间有两种关系:
我的 SQL 请求有问题,当我运行请求时,我收到此消息错误: org.postgresql.util.PSQLException: A result was returned when none wa
我正在使用 Jersey 创建一个 RESTful API,其中实现了 ExceptionMapper 类来捕获所有错误。 public class ExceptionFilter implement
环境 视窗 HikariCP 版本:2.6.0 JDK 版本:1.8.0_65 数据库:PostgreSQL 驱动程序版本:42.0.0 org.postgresql 它工作了一段时间,比如 2 小时
我对我的一个实体有一个唯一的约束,每当我收到一个 PSQLException,只要违反该约束就会发生,我想用一个错误的请求来响应。 这是我尝试实现的异常处理程序: @ControllerAdvice
使用 spring-boot-starter-data-jpa(版本 2.0.4.RELEASE)和 PostgreSQL(版本 9.5.10),我不断收到 PSQLException:查询没有返回结
我正在使用 Hibernate 5.2,我想删除一条记录。 表与另一个表有关系,并不总是可以删除。我想捕获我的 PSQLException 并找到原因。我尝试捕获它,例如HibernateExcept
我正在尝试在表上进行插入并获取自动生成的主键 PreparedStatement pstm = dbcon.prepareStatement(sql,Statement.RETURN_GENE
我遇到一个性能问题,即当访问特定页面且该页面无法加载时,应用程序无法执行数据库查询。错误的堆栈跟踪如下: Caused by: java.rmi.UnmarshalException: Error u
我们已经部署了几个在同一个 tomcat 容器中运行的应用程序,并通过 JNDI 查找连接到我们的 postgresql 数据库。这是经过清理的配置 (server.xml): 这几个月都运行良好,
你好,我正在尝试在 postgresql 数据库中上传文件,但出现错误:这是代码的堆栈跟踪。任何人都可以告诉我哪里出了问题吗?我的查询是- String sql = "insert into proj
我正在尝试将我的数据库和网络应用程序从 PostgreSQL 迁移到 MySQL,该应用程序使用的是 play 2.3.0。 我使应用程序与 MySQL 一起工作,但我还没有进行错误管理,我需要你的帮
public UserBean authenticate(String username,String password){ PostGresDAO pg=new PostGresDAO();
我正在尝试在 PostgreSQL 8.4.2 数据库上运行 hibernate 。每当我尝试运行一个简单的 java 代码时,例如: List users = service.findAllUser
我正在尝试获取 PlaceEntity。我之前存储了一堆 GooglePlaceEntity 对象,其中 @Entity @Table(name = "place") @Inheritance(
我是一名优秀的程序员,十分优秀!