java - 检查 hibernate 中是否存在特定序列

标签 java postgresql hibernate

我想运行这样的查询 -

"SELECT nextval('sequenceName')"

但在此之前我想检查 sequenceName 在 Hibernate 中是否存在。

最佳答案

这里的答案给了我一个想法Check if sequence exists in Postgres (plpgsql) , 我不知道这是否是一个完美的解决方案,但您可以使用:

SELECT COUNT(*) 
FROM information_schema.sequences 
WHERE sequence_schema='sch_name' AND sequence_name='sequence_name'

这将为您提供 0(如果不存在)或 1(如果存在)。

所以要解决你的问题,你必须分两次执行你的查询,一个是检查你的序列是否存在,第二个是选择你的序列,所以你的代码应该是这样的:

String sch_name = "sch_test";
String sequence_name = "sequence_name";

//Check if your sequence exist or not
Query q = createNativeQuery("SELECT COUNT(*) FROM        
                             information_schema.sequences 
                             WHERE sequence_schema='" + sch_name + "' 
                             AND sequence_name='" + sequence_name + "'");

int i = (Integer) q.getSingleResult();
int sequence = 0;

//if the sequence exit it will return 1
if(i == 1){
  //increment your sequence and return the result
  q = createNativeQuery("SELECT nextval('" + sequence_name + "')");
  sequence = (Integer) q.getSingleResult();
}else{
   //sequence not exist
}

关于java - 检查 hibernate 中是否存在特定序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43138176/

相关文章:

java - 是否可以使用 Unix 套接字在 C 应用程序和 Java 应用程序之间创建通信?

java - C3P0 托管连接池无法从其主要资源或工厂资源中获取资源

javascript - postman 没有收到 POST 的回复

mysql - 货币兑换数据库模式

java - JPQL 连接 2 个表 : Writing jpql

Java Hibernate 在失败时不会回滚事务,因为数据库中有重复的键

java - Mockito:模拟 Hibernate Criteria uniqueResult 时出现 NullPointerException

java - 更新 Swing 组件,同时阻止 GUI

java - 如何在jpa/hibernate中实现这个简单的关联

java - winzipaes 在 Android 上解密 10 MB 的文件很慢