【发布时间】:2015-09-01 02:16:01
【问题描述】:
我有一个 Spring CrudRepository,它只是一个接口,我有一个持久化上下文类,我在其中定义了我的数据源:
@Configuration
@EnableTransactionManagement
public class PersistenceContext {
@Bean(name="dataSource", destroyMethod = "close")
public DataSource dataSource() throws SQLException {
return ...
public interface DataRepository extends CrudRepository<Data, Long> {
Data findById(long id);
}
然后
@Autowired
protected DataRepository repository;
...
Data data = repository.findById(1234);
一切正常,但数据库模型是这样的,在使用代码调用findById 之前,我实际上需要在同一连接上调用存储过程。此过程必须采用调用代码将知道的参数,但在调用之间会有所不同,因此不可能仅覆盖 DataSource.getConnection 并在那里返回“准备好的连接”。
在对 Spring 存储库进行访问代码之前,有什么方法可以“准备连接”吗?
【问题讨论】:
-
通过 AOP?请参阅此处,其中包括“如何使用 AOP 丰富存储库的示例”github.com/spring-projects/spring-data-jpa-examples/blob/master/…
-
这很有趣,正在尝试......
-
如果您可以获取当前 EntityManager 的句柄,那么您应该能够获得底层连接:stackoverflow.com/questions/4148231/…
-
Ae,通过可以注入的EntityManager获取session,然后连接。这就是答案,我会接受。
标签: java spring jpa spring-data