有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何将“查找或创建”方法提取到抽象类?(Spring数据Jpa)

我使用的是Spring Data JPA,我有一堆类似这样的存储库:

public interface CustomerRepository extends JpaRepository<Customer, Long> {}

在repositories下,我有很多服务,其中很多都需要实现方法findOrCreate(字符串名称),如下所示:

@Override
    @Transactional
    public List<Customer> findOrCreate(final String name) {
        checkNotNull(name);
        List<Customer> result = this.customerRepository.findByName(name);
        if (result.isEmpty()) {
            LOGGER.info("Cannot find customer. Creating a new customer. [name={}]", name);
            Customer customer = new Customer(name);
            return Arrays.asList(this.customerRepository.save(customer));
        }
        return result;
    }

我希望将方法提取到抽象类或某个地方,以避免为每个服务、测试等实现它

抽象类可以如下所示:

public abstract class AbstractManagementService<T, R extends JpaRepository<T, Serializable>> {

    protected List<T> findOrCreate(T entity, R repository) {
        checkNotNull(entity);
        checkNotNull(repository);

        return null;
    }

}

问题在于,在创建一个新对象之前,我需要以字符串的形式按名称查找对象。当然,接口JpaRepository不提供这种方法

我怎样才能解决这个问题

致意


共 (1) 个答案