当前位置: 首页 > 知识库问答 >
问题:

缺少Crudepository#findOne方法

吕峰
2023-03-14

我在我的项目中使用Spring 5。直到今天,还有可用的方法CrudRepository#findOne

但下载最新快照后,它突然消失了!有没有参考现在没有的方法?

我的依赖项列表:

apply plugin: 'java'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'


repositories {
    mavenCentral()
    maven { url "https://repo.spring.io/snapshot" }
    maven { url "https://repo.spring.io/milestone" }
}    

dependencies {
    compile 'org.springframework.boot:spring-boot-starter-data-jpa'

    runtime 'com.h2database:h2:1.4.194'
}

更新:

似乎此方法已被crudepository#findById

共有3个答案

岳均
2023-03-14

我们有数百个旧的findOne()方法的用法。而不是开始一个庞大的重构,我们最终创建了以下中介接口,并让我们的存储库扩展它,而不是直接扩展JpaRepository

@NoRepositoryBean
public interface BaseJpaRepository<T, ID> extends JpaRepository<T, ID> { 
    default T findOne(ID id) { 
        return (T) findById(id).orElse(null); 
    } 
} 
仇炜
2023-03-14

请注意,findById并不能完全替代findOne,它返回一个可选的,而不是null

由于对新的java不太熟悉,我花了一点时间才弄明白,但是这将findById行为变成了findOneone:

return rep.findById(id).orElse(null);

吕翰飞
2023-03-14

请参阅与此提交关联的DATACMNS-944,该提交具有以下重命名

╔═════════════════════╦═══════════════════════╗
║      Old name       ║       New name        ║
╠═════════════════════╬═══════════════════════╣
║ findOne(…)          ║ findById(…)           ║
╠═════════════════════╬═══════════════════════╣
║ save(Iterable)      ║ saveAll(Iterable)     ║
╠═════════════════════╬═══════════════════════╣
║ findAll(Iterable)   ║ findAllById(…)        ║
╠═════════════════════╬═══════════════════════╣
║ delete(ID)          ║ deleteById(ID)        ║
╠═════════════════════╬═══════════════════════╣
║ delete(Iterable)    ║ deleteAll(Iterable)   ║
╠═════════════════════╬═══════════════════════╣
║ exists()            ║ existsById(…)         ║
╚═════════════════════╩═══════════════════════╝
 类似资料:
  • 问题内容: 我在项目中使用Spring 5。直到今天,仍然有可用的方法。 但是下载最新的快照后,它突然消失了!有没有参考说明该方法现在不可用? 我的依赖项列表: 更新: 似乎此方法已被替换为 问题答案: 请参阅与该提交关联的DATACMNS-944,它具有以下重命名

  • 我是groovy的新手。我有这样的代码。 串味 从这个客户端映射中,我需要迭代appName和enable的值。为此,我使用了get方法。。。我对此不确定。 使用此get方法时,我遇到以下错误。因为我是groovy新手,所以我不知道这里发生了什么 棒极了。lang.MissingMethodException:没有方法com的签名。康卡斯特。csv。哈克索。SecureFirebaseRestCl

  • 问:您是如何处理这些用例的? 是否使用静态帮助器方法? 是否使用后跟isafter/isbefore的详细等于? 是否使用否定的相反条件? 是否使用第三方库帮助程序? null Edit:正如Andreas所建议的,我用方法添加了版本,我希望我正确(无需测试)。 编辑2:示例:

  • 我正在使用Hibernate5.4.15.fianl版本连接到DB2数据库。创建SessionWorks时,我收到以下错误: 使用配置类对象配置属性, 我尝试了在网络上找到的所有可能的组合来获取会话工厂对象 1。从上面的配置对象: 每个调用直接或间接到达Hibernate类:SessionFactoryImpl构造函数行:259 -- getProperties()方法不是此类的一部分,并获取异常

  • 我是Groovy新手,但我正在尝试编写一个简单的递归方法来将层次路径解析为对象图。以下是我尝试过的: 但我得到以下错误: 我错过了什么?