繁体   English   中英

嵌套的异常是org.hibernate.exception.SQLGrammarException:ORA-02289:序列不存在

[英]nested exception is org.hibernate.exception.SQLGrammarException: ORA-02289: sequence does not exist

编辑:

@NamedQueries({
    @NamedQuery(name="getOLTsByProcessStateAndAssignee",query="select o from Olt o where o.activityProcessId IN(:procId) order by modifiedtime desc"),
    @NamedQuery(name="getOLTsByProcessStateAndAssigneeForSearch",query="select o from Olt o where o.activityProcessId IN(:procId) and o.name like :name order by modifiedtime desc"),
    @NamedQuery(name="findOltbyname",query="select o from Olt o where o.name=:oltname and o.jioCenter.id=:jioCenterId"),
 })
@XmlRootElement(name="Olt") @Audited @Entity
@Table(name="olt")
public class Olt extends BaseEntity implements Serializable
{
    /**
     * 
     */
    private static final long serialVersionUID = 1L;


    /*@GeneratedValue(generator="olt_id_gen")
    @GenericGenerator(name = "olt_id_gen",
        strategy = "com.inn.fttx.model.IntegerSequenceGenerator",
        parameters = {
            @Parameter(name="sequence" , value="OLT_ID_SEQ")
        })
    @Id  */



    @SequenceGenerator(name = "olt_id_SEQ", sequenceName = "olt_id_SEQ", allocationSize=1)
    @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="olt_id_SEQ")

在这里,我得到以下异常-

嵌套的异常是org.hibernate.exception.SQLGrammarException:ORA-02289:序列不存在

我发现了不同的coderanch和stackoverflow线程,发现了什么:

  1. Oracle数据库正在运行(极有可能)
  2. 您的应用已连接到它(很有可能)
  3. 您已连接到正确的数据库(可能/可能未连接)
  4. 实际上有一个称为“ olt_id_SEQ”的序列表

我只是在上面粘贴了这些要点,所以我可以显示我已经做了什么。

但是在我的Oracle数据库中,我有这个顺序,我可以对其执行nextval选择。

请让我知道,如果麻烦是来自数据库方面还是java? 任何建议/建议将不胜感激。

如果您的语句There is actually a sequence table called "CUSTOMER_ID_sequence"则没有意义,因为您的代码正在尝试到达olt_id_SEQ序列。 而且序列不是表格。

因此,这里有两个选择:

1-您用于连接到oracle的用户对该序列olt_id_SEQ没有适当的授予。

2-您在代码中使用了错误的序列,因为您提到的应该是

 @SequenceGenerator(name = "CUSTOMER_ID_sequence", 
                    sequenceName = "CUSTOMER_ID_sequence", allocationSize=1)
 @GeneratedValue(strategy=GenerationType.SEQUENCE, 
                 generator="CUSTOMER_ID_sequence")

编辑

OP编辑了他的问题,但是这里的问题仍然与我上面提到的相同。

1-您用来连接到oracle的用户对该序列olt_id_SEQ没有适当的授予olt_id_SEQ或者该序列根本不存在。 要检查是否获得您在应用程序上使用的用户名密码并运行此查询,请执行以下操作:

select * from all_objects where object_name = 'OLT_ID_SEQ'

如果此查询不返回任何行,则序列不存在或没有授予它的权限。

查看什么是序列所有者的架构。 如果您使用的用户权限有限,则可能需要使用:[schemaName] .olt_id_SEQ或为此序列创建一个公共同义词。

我的问题现在解决了。 Hibernate正在自动使用序列。 因此,我为该顺序提供了支持,现在它可以正常工作了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM