我正在嘗試使用 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);
}

夢里花落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);
}
添加回答
舉報
0/150
提交
取消