SQLSyntaxErrorException - ORA-02287:此处不允许使用序列号

时间:2017-08-06 07:40:43

标签: java oracle hibernate jpa

在我的java代码中,我正在尝试执行插入操作,但由于某些原因,我得到了SQLSyntaxErrorException。虽然我尝试过,但我没有得到它背后的原因。以下是我的代码。

Query nativeQuery = em.createNativeQuery(
            "insert into TABLE_DIMENSION (DIMESNION_ID, DIMENSION_CODE, TABLE_CODE, TABLE_IND, CREATE_TIME, "
            + "CREATE_PLACE, CHG_DT, CHG_WARDANT) "
            + " (select TABLE_DIMENSION_SEQ.nextval, d.name,:dimensionCode, 0, :time, :place, :date, :wardant from table_master d where d.name in (:table_dimension_ids)) ");
        nativeQuery.setParameter("date", new Date());
        nativeQuery.setParameter("table_dimension_ids", tableDimensionList);
        nativeQuery.setParameter("dimensionCode", dimensionCode);
        nativeQuery.setParameter("wardant", wardant);
        number = nativeQuery.executeUpdate();

请指导。

2 个答案:

答案 0 :(得分:2)

您告诉您的查询,您将使用 6个参数,但只设置了 4个参数,您错过了放置:place:time在其他参数中,所以你必须使用:

nativeQuery.setParameter("place", place);
nativeQuery.setParameter("time", time);

在执行查询之前,您必须将其从查询中删除

答案 1 :(得分:1)

您应该跳过()

insert into TABLE_DIMENSION 
       (DIMESNION_ID, DIMENSION_CODE, TABLE_CODE, TABLE_IND
       , CREATE_TIME, CREATE_PLACE, CHG_DT, CHG_WARDANT)
select TABLE_DIMENSION_SEQ.nextval, d.name,:dimensionCode, 0
       , :time, :place, :date, :wardant 
from table_master d 
where d.name in (:table_dimension_ids)