当前位置: 首页 > 知识库问答 >
问题:

如何在自动生成PK中使用Redisson直写缓存策略

洪琦
2023-03-14

我计划使用Redis和Redisson作为我的Java应用程序和PostgreSQL DB之间的缓存层。我有一个名为Nodes的表,如下所示:

CREATE TABLE nodes
(
node_id bigint GENERATED BY DEFAULT AS IDENTITY(START WITH 1 INCREMENT BY 1),
node_name varchar(100) NOT NULL,
PRIMARY KEY (node_id)
)

我想使用Redisson RMap持久性来缓存这个结构。我的目标是使rmap如下所示:

Rmap<Integer, Node> 
public void createNode(String nodeName) {
  Node node = new Node();
  node.setName(nodeName);

  // how can I put elements in the rmap since, 
  // the PK will be available after the INSERT statement will run?
  rmap.put(?, node);
}

问题来了。既然PK是从Postgres自动生成的,那么我如何使用RMapWriter来插入节点呢?因为,为了将元素放入RMap中,我需要一个键,而在insert语句运行之前,我没有这个键?

共有1个答案

张成济
2023-03-14

您可以使用prepared语句从postgres获得生成的密钥。

   ps = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS) ;
   ps.execute();
   ResultSet rs = ps.getGeneratedKeys();
 类似资料:
  • 问题内容: 我想将用户持久保存到数据库中,并使用IDENTITY生成类型创建的User的ID(PK)的当前方案。例如 但我想在以下情况下进行操作:1)用户明确设置。2)如果未设置用户,则将自动分配它,并且它必须是唯一的。 请建议我一些可用的选项,以便我解决。谢谢。 问题答案: 您可以为此目的定义您的自定义ID生成器,如本SOAnswer中指出的那样 它的代码如下所示: 和

  • 我启用了 为了让Hibernate自动生成数据库,我创建了一个UpperCaseNamingStrategy.java扩展org.Hibernate.cfg.PromedNamingStrategy。 根据https://docs.jboss.org/hibernate/orm/5.0/manual/en-us/html_single/#configuration-namingstrategy 在

  • 这类似于这个问题,但我们用Gradle代替。假设我们在构建脚本中直接使用jOOQ的代码生成,正如文档中所描述的那样。 有两个问题。首先,我们将向生成器配置中添加一个新的策略,这应该很简单: 然而,如果我们打印得到的XML配置,名称元素就会被神秘地省略(也会被悄悄地省略): 其次,可以使用什么机制来预编译生成器策略类()并使其在构建脚本的类路径中可用?这里有一个可能的问题:策略代码依赖于jOOQ的c

  • 使用jOOQ,我可能希望将jOOQ代码生成器与Maven和自定义生成器策略结合使用。看起来这可以这样做(省略不相关的部分): 上面的配置描述了问题。jOOQ的代码生成器挂钩到Maven生命周期的生成目标,它发生在生命周期的编译目标之前。但是,对于代码生成,它需要一个预编译的自定义策略类,否则我会得到一个。如何使用Maven解决这个问题?我可以在执行目标之前编译单个类吗?

  • 我有 我怎样才能从(x,y)得到一个7x10的矩阵,但每一行都是从前面的一行加1得到的?例如,第一行是 0,1,2,3,4,5,6 第二排 1,2,3,4,5,6,7 等等

  • 问题内容: 我正在尝试检查目录是否存在,如果发生这种情况,我想给它另一个数字,例如,如果“ folderX”存在,那么我想创建一个新的名为“ FolderX1”的文件夹这样做一次,因为我在这样的if / else语句中拥有它: 我要递归地执行此操作,如果程序检测到“ folderX”存在,则应跳转并检查其他文件夹(folderX,FolderX1,FolderX2等),直到找到可以创建的文件夹,但