Oracle squence的下一个val始终返回null

Oracle squence的下一个val始终返回null,oracle,session,Oracle,Session,我正在检查序列的下一个val 方法如下: public Long getCodeCommercialOffer(final String seq) { final Session session = (Session) getEntityManager().getDelegate(); Query q= (Query) session.createQuery("SELECT " + seq + ".nextval FROM dual"); return (Long) q.getSin

我正在检查序列的下一个val

方法如下:

public Long getCodeCommercialOffer(final String seq) {
  final Session session = (Session) getEntityManager().getDelegate();
  Query q= (Query) session.createQuery("SELECT " + seq + ".nextval FROM dual");
  return (Long) q.getSingleResult();
}

为什么返回值总是空的

我不确定您作为seq name传递的值是什么。您可能需要将模式名称附加到序列的前面(例如:mySchema.sequenceName)。我建议您打印出您试图运行的SQL语句,在数据库查询工具(例如:TOAD)中单独运行该语句,调整SQL使其工作,然后将其放回代码中。

谢谢您的回答,我终于找到了解决方案


问题是演员阵容,我用BigDecimal而不是Long替换它。从这样的序列中进行选择似乎很奇怪。为什么不在向系统中插入数据时直接引用序列,并使用RETURNING来获取分配的值?