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

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

春季 JPA 基本存儲庫

春季 JPA 基本存儲庫

慕工程0101907 2022-08-03 15:36:09
我創建了一個自定義存儲庫來覆蓋持久性方法,并嘗試將其連接起來,如春季文檔中所述。我沒有收到任何錯誤,啟動時找到了所有實體和存儲庫,當我調用repo.saveAll(實體)時,持久性工作正常。但是,從不調用我的自定義代碼。我已經添加了日志語句,甚至在我的代碼中拋出了RuntimeExceptions,只是為了看看它是否正在執行,但它肯定被忽略了。我錯過了哪一步?@Configuration@Profile("test")@EnableJpaRepositories(repositoryBaseClass = SetClientInfoRepositoryImpl.class,        basePackages = {"gov.penndot.hwy.apras.common.repository" },         entityManagerFactoryRef = "serviceEntityManagerFactory",         transactionManagerRef = "serviceTransactionManager")public class TestDatabaseConfig {    @Bean(name = "serviceDataSource")    public DataSource dataSource() {        DriverManagerDataSource dataSource = new DriverManagerDataSource();        dataSource.setDriverClassName("org.h2.Driver");        dataSource.setUrl("jdbc:h2:mem:db;DB_CLOSE_DELAY=-1");        dataSource.setUsername("sa");        dataSource.setPassword("sa");        return dataSource;    }    @Bean    public EntityManagerFactoryBuilder entityManagerFactoryBuilder() {        return new EntityManagerFactoryBuilder(new HibernateJpaVendorAdapter(), new HashMap<String, Object>(), null);    }    @Bean(name = "serviceEntityManagerFactory")    public LocalContainerEntityManagerFactoryBean serviceEntityManagerFactory(EntityManagerFactoryBuilder builder,            @Qualifier("serviceDataSource") DataSource dataSource) {        return builder                .dataSource(dataSource)                .packages("stuff")                .persistenceUnit("service")                .build();    }    @Bean(name = "serviceTransactionManager")    public PlatformTransactionManager transactionManager(            @Qualifier("serviceEntityManagerFactory") EntityManagerFactory serviceEntityManagerFactory) {        return new JpaTransactionManager(serviceEntityManagerFactory);    }
查看完整描述

1 回答

?
慕絲7291255

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

好吧,這是一個非常絕望的想法,但它可能值得一試......

創建自定義存儲庫接口:

public interface SetClientInfoRepository<T, ID> extends JpaRepository<T, ID> {
}

通過自定義基本存儲庫實現此存儲庫接口:

public class SetClientInfoRepositoryImpl<T, ID extends Serializable> extends SimpleJpaRepository<T, ID> implements SetClientInfoRepository<T, ID> {
}

...最后,通過存儲庫接口而不是JpaRepository

通過這種方式,Spring必須從您的實現中創建存儲庫代理,因為它沒有其他可以使用的類。此外,如果它由于任何原因無法創建存儲庫,您將在啟動期間獲得信息更豐富的異常。

使用自定義存儲庫接口本身并不是一件壞事,因為您以后總是很有可能想要向存儲庫添加一些常見的自定義方法,然后它會派上用場。


查看完整回答
反對 回復 2022-08-03
  • 1 回答
  • 0 關注
  • 107 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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