我正在使用Springboot应用程序,我已经创建了一个genericRepository,我所有的Repository都从它扩展,在通用存储库中,我定义了findByIdAndName(String id,String name)函数。我的问题是当启动应用程序时它失败了,因为不是所有实体都有name属性,但其他实体有。我能找到一种方法来保持将函数放在通用存储库中吗?是否有任何anotation或sth,以避免运行时错误,这里的代码库
import java.util.Optional;
import org.springframework.data.repository.NoRepositoryBean;
import com.mobinets.nep.client.backend.repository.AbstractEntityRepository;
@NoRepositoryBean
public interface GenericCatalogRepository<E,ID> extends AbstractEntityRepository<E,ID> {
Optional<E> findByIdAndName(String id,String name);
}
字符串
以前有没有人遇到过类似的问题,先谢谢了
1条答案
按热度按时间nnsrf1az1#
在我看来,这似乎有点开销,特别是考虑到它可能不适合所有情况下的高级抽象,特别是当不是每个实体都拥有“name”字段时。(一个用于具有“名称”字段的实体,另一个用于没有“名称”字段的实体),但是它仍然引入了一定程度的不必要的复杂性。
我提出了另一种方法:避免过度使用泛型,而是选择为每个实体创建专用的存储库。这些存储库可以扩展默认的JPA存储库(例如JpaRepository)。虽然这可能会导致一些重复的代码,特别是在按名称搜索的情况下,但我相信这是一个可管理的权衡,不会造成重大问题。