JPA/Hibernate + Postgres SequenceGenerator

3

我一整天都在试图使用JPA/Hibernate从Postgres中获取序列,但它一直返回:

INFO: Hibernate:call next value for tb_cdr_id_seq WARN: SQL错误:0,SQL状态:42601 ERROR:ERROR:在“call”附近或者是“call”的语法错误 SEVERE:javax.persistence.PersistenceException:org.hibernate.exception.SQLGrammarException:无法提取ResultSet

@Entity
@Table(name = "tb_cdr")
@XmlRootElement
@SequenceGenerator(name = "tb_cdr_id_seq", sequenceName = "tb_cdr_id_seq", allocationSize=1)
public class Cdr implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "tb_cdr_id_seq")
    @Basic(optional = false)
    @Column(name = "id")
    private Long id;
....

}

PostgreSQL版本为9.2,没有像Hibernate中的“call next value”函数,应该怎么办?

谢谢。


请展示Hibernate生成的SQL代码和完整准确的错误信息。查看PostgreSQL日志(log_statement=on)或者Hibernate日志。猜测可能是使用了错误的SQL方言设置,或者序列tb_cdr_id_seq不存在。 - Craig Ringer
<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect"/> 已经解决了问题!谢谢 - tubadc
1个回答

4
Hibernate没有自动检测到方言或者被覆盖了。将hibernate.dialect显式地设置为org.hibernate.dialect.PostgreSQLDialect可以解决这个问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接