亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用多個數據源 (Micronaut) javax.persistence.Transaction

使用多個數據源 (Micronaut) javax.persistence.Transaction

RISEBY 2023-06-21 14:54:50
我正在嘗試使用 micronaut (1.2.0) 的多個數據庫連接,沒有注入方法對我有用,這是我的配置:應用.ymldatasources:  default:    url: ${JDBC_URL:`jdbc:mysql://localhost/cossine?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC`}    username: ${JDBC_USER:******}    password: ${JDBC_PASSWORD:*****}    driverClassName: ${JDBC_DRIVER:com.mysql.cj.jdbc.Driver}  keycloak:    url: ${JDBC_KYC_URL:`jdbc:mysql://localhost/keycloak?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC`}    username: ${JDBC_KYC_USER:******}    password: ${JDBC_KYC_PASSWORD:*******}    driverClassName: ${JDBC_DRIVER:com.mysql.cj.jdbc.Driver}jpa:  default:    packages-to-scan:      - 'com.acmain.domain'    properties:      hibernate:        hbm2ddl:          auto: none        show_sql: false  keycloak:    packages-to-scan:      - 'com.acmain.kdomain'    properties:      hibernate:        hbm2ddl:          auto: none        show_sql: true當我使用默認配置時,它可以正常工作,但是當使用第二個配置時,如下所示: private final EntityManager entityManager;    public UserEntityImpl(@CurrentSession(value = "keycloak") EntityManager em) {        this.entityManager = em;    }    @Override    @Transactional    public UsersResponse findAll(@NotNull SortingAndOrderArguments args) {        List<UserEntity> users;        StringBuilder qlString = new StringBuilder("SELECT g FROM UserEntity as g");...........................我錯過了什么?也試過 @PersistenceContext(name = "keycloak")     private final EntityManager entityManager;
查看完整描述

3 回答

?
繁花不似錦

TA貢獻1851條經驗 獲得超4個贊

如果有人來到這里尋找如何在不使用 Hibernate 的情況下執行此操作,那么這應該可以實現。


@Transactional

@TransactionalAdvice("my-datasource") // if you have more than one datasource

public Thing saveThing(Thing thing) {

    repo.save(thing);

    

}


查看完整回答
反對 回復 2023-06-21
?
夢里花落0921

TA貢獻1772條經驗 獲得超6個贊

Micronaut 文檔對此非常清楚:

在多數據源場景中,@Repository 和@TransactionalAdvice 注釋可用于指定要使用的數據源配置。默認情況下,Micronaut Data 將查找默認數據源。

例如:

@Repository("inventoryDataSource")?

@JdbcRepository(dialect = Dialect.ORACLE)?

@TransactionalAdvice("inventoryDataSource")?

public interface PhoneRepository extends CrudRepository<Phone, Integer> {

? ? Optional<Phone> findByAssetId(@NotNull Integer assetId);

}


查看完整回答
反對 回復 2023-06-21
?
撒科打諢

TA貢獻1934條經驗 獲得超2個贊

好吧,只需要添加

??@Transactional("keycloak")
查看完整回答
反對 回復 2023-06-21
  • 3 回答
  • 0 關注
  • 268 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號