Ash*_*han 15 java sql spring jpa spring-data-jpa
我有一个存储库,我试图用它从序列中获取下一个值。我需要参数化序列名称。
存储库查询看起来像:
@Query(value = "SELECT ?1.NEXTVAL from Dual;", nativeQuery = true) String getSeqID(@Param("seqName") String seqName);
但是,我收到以下异常:
org.hibernate.QueryException: JPA-style positional param was not an integral ordinal
at org.hibernate.engine.query.spi.ParameterParser.parse(ParameterParser.java:187) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
at org.hibernate.engine.query.spi.ParamLocationRecognizer.parseLocations(ParamLocationRecognizer.java:59) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
at org.hibernate.engine.query.internal.NativeQueryInterpreterStandardImpl.getParameterMetadata(NativeQueryInterpreterStandardImpl.java:34) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
at org.hibernate.engine.query.spi.QueryPlanCache.getSQLParameterMetadata(QueryPlanCache.java:125) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
Run Code Online (Sandbox Code Playgroud)
Hin*_*ori 15
package br.com.mypackage.projectname.repository;
import java.math.BigDecimal;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;
@Repository
public interface MyRepository extends JpaRepository<Myentity, Long> {
@Query(value = "SELECT SCHEMA.SEQUENCE_NAME.nextval FROM dual", nativeQuery = true)
public BigDecimal getNextValMySequence();
}
Run Code Online (Sandbox Code Playgroud)
在 PostgreSQL 中是:
Long value = Long.parseLong(entityManager
.createNativeQuery("select nextval('sequence_name')")
.getSingleResult().toString());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
64884 次 |
| 最近记录: |