我使用java应用程序与谷歌果汁作为注入器以及jdbi作为数据库层。我需要使用java代码从数据库获取序列。
我在应用程序的数据库中有表,未使用该序列。但出于其他目的,我需要序列值作为当前、下一个和最后一个。
尽管以下查询在 pg-admin 中有效
select currval('testsequence');
select nextval('testsequence');
select last_value FROM testsequence;
Run Code Online (Sandbox Code Playgroud)
代码如下。
public long getCurrentSequenceFromDB()
{
LOGGER.info("SequenceHelper :getCurrentSequenceFromDBSTART");
try (Handle handle = jdbi.open())
{
SequenceDAO squenceDAO = handle.attach(SequenceDAO.class);
long sequence = squenceDAO.getCurrentSequence();
if (sequence != 0)
{
LOGGER.info("SequenceHelper :getCurrentSequenceFromDBEND");
return sequence;
}
else
{
LOGGER.info("SequenceHelper :getCurrentSequenceFromDBsequence sequence is null");
return 0;
}
}
catch (Exception e)
{
LOGGER.error("Error in getting sequence from database", e);
throw new SignageServiceException(ErrorCodes.UNEXPECTED_ERROR, "Error in getting sequence from database", e);
}
}
Run Code Online (Sandbox Code Playgroud)
在查询级别为:
@SqlQuery("select …Run Code Online (Sandbox Code Playgroud)