Hibernate“无法获得下一个序列值”oracle

时间:2011-04-19 20:29:29

标签: oracle hibernate sequence

当我尝试使用Hibernate保存此实体时,我收到此错误could not get next sequence value

package beans;

import javax.persistence.*;

@Entity
@Table(schema = "EVGENY")
public class Article {
    @SequenceGenerator(name="ArticleGen", sequenceName="ARTICLESEC")
    @Id
    @GeneratedValue(generator= "ArticleGen")
    private int id;
    @Column(name="title")
    private String title;
    @Column(name="text")
    private String text;
    @Column(name="postat")
    private String postat;
    @ManyToOne
    @JoinColumn(name = "USER_ID")
    private UserAcc user;

    public Article(){
    }

    Get Set...      

}

insert into article (title) values('asdfaf');

在Oracle SQL Developer中,insert into article (title) values('asdfaf');运行良好。

如果我明确设置id变量(Article a = new Article();a.setId(3);) 一切都好。我仔细检查了序列的名称。

2 个答案:

答案 0 :(得分:1)

检查序列的用户权限。大多数时候是赠款问题

答案 1 :(得分:0)

我知道很多理由可以获得此异常。也许你可以查看问题并给我一些关于你的问题的更多细节:

  • 检查'hibernate.dialect'是否设置为Oracle?
  • 序列确定权限(图式,选择等)?
  • 表后面是否有一些触发器并抛出plsql错误?
  • 其他一些可能会破坏插入的plsql?
  • 交易是否已破?
  • 在调用create之前是否存在异常(有时是静默的)(如陈旧状态或退出),以便将事务标记为回滚?
  • 在异常之前是否存在连接错误错误?
  • 是可能已经附加的实体(使用contains进行检查)?
  • 您是否使用spring或其他框架来添加异常解析器或翻译器?
  • 您使用的是哪个版本的oracle数据库? 10或11?使用的驱动程序是否正确?
  • 之前有没有返回任何值的findSingle调用?