根据连接DEV / SIT / PROD动态更改查询架构

时间:2017-09-22 19:11:28

标签: java spring spring-data-jpa

我在Spring Data JPA中有一个本机查询:

@Repository
public interface BookRepository extends JpaRepository<Book, Integer>{       
    @Query(value = "select * from DEV.Book where find_in_set(market)", nativeQuery = true)
    public List<Book> findBooksByMarcket(@Param("market") String market);
}

现在,我想根据我尝试将字符串传递给原始查询的连接动态地根据我的连接DEV.Book更改SIT/PROD,而该连接并不起作用。最好的方法是什么?

3 个答案:

答案 0 :(得分:0)

您应该在连接中设置Schema并保留没有架构的查询。

答案 1 :(得分:0)

您应该找到一些方法从查询中删除命名空间。

例如,您可以拥有三个没有任何命名空间的数据库。如果通过属性配置数据库连接,则可以通过提供不同的启动属性或属性文件轻松切换。

答案 2 :(得分:0)

您可以这样使用它:

@Override
public List<Book> findBooksByMarcket(String market) {

    TypedQuery query = em.createNativeQuery("select * from DEV.Book where find_in_set(?)", Book.class);
    query.setParameter(1, market);

    return query.getResultList();
}