java - 如何使用Java 8的默认方法在接口(interface)中使用EntityManager实例?

标签 java spring jpa java-8 spring-data-jpa

我正在尝试在Spring数据存储库的接口(interface)中实现默认方法。我们有什么办法可以在 Java 8 的界面中使用默认 EntityManager 的实例吗?

以下是我想要执行的所需实现。

import org.springframework.data.repository.CrudRepository;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

public interface CustomerRepository extends CrudRepository<Customer, Long> {

   @PersistenceContext
   EntityManager em;

   default List<Customer> findCustomersByCity(String city){
       Query query = em.createNativeQuery("SELECT * FROM customer WHERE city = ?1", Customer.class);
       query.setParameter("city",city);
       return query.getResultList();
   }

}

有什么办法可以实现这样的设计吗?任何帮助表示赞赏。

最佳答案

不作为接口(interface)默认方法,但您可以编写基于自定义普通 JPA 的存储库接口(interface)实现。 请参阅CustomerRepositoryJpaCustomerRepository Spring Data Book 示例中的实现。

查看更多Spring Data引用信息: 4.6. Custom Implementations for Spring Data Repositories

关于java - 如何使用Java 8的默认方法在接口(interface)中使用EntityManager实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62801062/

相关文章:

java - Spring Data Repositories - 查找列表中的 where 字段

java - Java中集合对象的最大值

java - jep在java中解释python时出错

java - 什么是NullPointerException,我该如何解决?

java - IntelliJ IDEA 2017.2.5 : Cannot determine embedded database driver

java - 找不到时异常

java - 指定要在 JPA 实体而不是类中使用的转换器的特定实例

java - 使用spring jpa编写动态查询的方法

java - Readlock和Writelock会导致writer饿死吗?

java - 错误 : Must declare a named package because this compilation unit is associated to the named module '*******'