Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从/config/application更改数据库的URL不会影响我的输出Micronaut_Java_Postgresql_Hibernate_Consul_Micronaut - Fatal编程技术网

Java 从/config/application更改数据库的URL不会影响我的输出Micronaut

Java 从/config/application更改数据库的URL不会影响我的输出Micronaut,java,postgresql,hibernate,consul,micronaut,Java,Postgresql,Hibernate,Consul,Micronaut,我不熟悉micronaut和micro服务。我的问题是: 我有两个数据库,分别名为concur和concur_1。它们都有一个名为trials的表,表中的列名称相同,分别为name:varchar和age:int,但数据不同 我有一个简单的应用程序,其中RESTAPI使用Micronaut显示我的表数据。我听说过这种集中式配置或分布式配置,然后我尝试在concur的/config/application KV中以yaml格式构建配置 我的配置实际上正在运行。我可以正确显示表的数据和属性名为foo

我不熟悉micronaut和micro服务。我的问题是:

我有两个数据库,分别名为concur和concur_1。它们都有一个名为trials的表,表中的列名称相同,分别为name:varchar和age:int,但数据不同

我有一个简单的应用程序,其中RESTAPI使用Micronaut显示我的表数据。我听说过这种集中式配置或分布式配置,然后我尝试在concur的/config/application KV中以yaml格式构建配置


我的配置实际上正在运行。我可以正确显示表的数据和属性名为foo.bar的值。但是,当我将数据源URL从../consul更改为../consul_1,并将foo.bar值从halo更改为hai,点击/刷新端点,然后再次尝试显示我的表数据和foo.bar值时,我的表数据保持不变,但foo.bar发生了更改

更新 出于好奇,我尝试在存储库、控制器类和POJO类中添加来自micronaut的@Refreshable注释,但这些都不起作用。我还尝试从存储库实现中删除@CurrentSession和@PersistenceObject,因为我认为这是原因,但也没有发生任何事情

我尝试过使用getEntityManagerFactory.getCache.ReceictAll,尝试设置2个数据源,然后使用@Transactional${foo.bar}数据源名称与foo.bar值和@CurrentSession${foo.bar}相同,希望能够刷新连接。但这些都不起作用

Micronaut版本:1.2.1; JVM版本:1.8.0

以下是我目前的代码:

休息控制器

@控制器/控制器 公共类控制{ @注入 公共部门间; @得到/ 公共字符串测试{ System.out.printlinter.string; 返回String.valueOfInter.showAll; } } 存储库接口

公共接口{ 列表显示全部; 字符串字符串; } 存储库实现

@独生子女 @清新的 公共类imple实现了inter{ @注入 @当前会话 私人实体管理者实体管理者; @值${foo.bar} 私有字符串; @凌驾 @TransactionalreadOnly=true 公开名单{ 字符串qstring=从u中选择u; TypedQuery query=entityManager.createQueryqstring,Trials.class; List hasil=query.getResultList; 返回哈西尔; } @凌驾 公共字符串{ 返回s; } } 试训班

@Entityname=试验 @桌子 公开庭审{ @身份证 @Columnname=名称 私有字符串名称; @Columnname=年龄 私人整数年龄; 公开审判{ } 公共字符串getName{ 返回名称; } public void setNameString名称{ this.name=名称; } 公共整数集{ 回归年龄; } public void setAgeInteger年龄{ 这个。年龄=年龄; } @凌驾 公共字符串toString{ ObjectMapper ObjectMapper=新的ObjectMapper; 试一试{ 返回objectMapper.writeValueAsStringthis; }catch JsonProcessingException e{返回失败;} } } application.yml

micronaut: 应用程序: 名称:领事配置exc -- 领事: 客户: 注册: 已启用:true -- 端点: 全部: 已启用:true 敏感:假 停止: 已启用:false bootstrap.yml

micronaut: 应用程序: 名称:领事配置exc 配置客户端: 已启用:true 领事: 客户: 配置: 格式:YAML defaultZone:${concur_主机:localhost}:${concur_端口:8500} 最后,concur key/value中的/config/application

傅: 光环 -- 数据源: 违约: url:jdbc:postgresql://localhost:5432/consul 用户名:postgres 密码:root driverClassName:org.postgresql.Driver -- jpa: 违约: 实体扫描: -concur.config.exc.domain 我想要的是,当我将concur更改为concur_1时,我只需要点击/刷新micronaut提供的端点,然后数据库就会更改。但目前,我需要重新启动我的应用程序,以使其更改


有谁能告诉我我做错了什么,并告诉我如何让它工作?非常感谢您,抱歉英语不好。

但是,当我将数据源URL从../consul更改为../consul_1,并将foo.bar值从halo更改为hai,点击/刷新端点,然后再次尝试显示我的表数据和foo.bar值时,我的表数据保持不变,但foo.bar发生了更改。-这是因为包含foo.bar值的imple类是@Refreshable。数据库连接不正确。@M.Deinum我明白了,谢谢您的回答。我将尝试找到刷新连接的方法。但是,当我将数据源URL从../consul更改为../consul_1,并将foo.bar值从halo更改为hai,点击/刷新端点,然后再次尝试显示我的表数据和foo.bar值时,我的表数据保持不变,但foo.bar发生了更改。-那是贝卡
使用包含foo.bar值的imple类@Refreshable。数据库连接不正确。@M.Deinum我明白了,谢谢您的回答。我将设法刷新连接。