检查特定序列是不是存在于休眠中
Posted
技术标签:
【中文标题】检查特定序列是不是存在于休眠中【英文标题】:Check that specific sequence exists or not in hibernate检查特定序列是否存在于休眠中 【发布时间】:2017-03-31 10:15:10 【问题描述】:我想运行这样的查询 -
"SELECT nextval('sequenceName')"
但在此之前,我想检查 sequenceName 在 Hibernate 中是否存在。
【问题讨论】:
【参考方案1】:这里的答案给了我一个想法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
【讨论】:
如果序列不存在,第二个查询依然会报错:rextester.com/ESJW42101 哎呀这是正确的@a_horse_with_no_name 我会尽力解决它谢谢 @a_horse_with_no_name 我真的无法找到我已经使用CASE WHEN
的解决方案,但这并不能解决问题,我认为更好的解决方案是使用代码没有?以上是关于检查特定序列是不是存在于休眠中的主要内容,如果未能解决你的问题,请参考以下文章
Linux内核中休眠与唤醒的使用(wait_eventwake_up)
Linux内核中休眠与唤醒的使用(wait_eventwake_up)