【发布时间】:2023-03-19 20:57:01
【问题描述】:
我只想打印存储在数据库中的每个用户的名称。
我正在使用这个存储库:
@Repository
interface User: JpaSpecificationExecutor<User>, PagingAndSortingRepository<User, Long> {
@Query("from User")
fun findAllUsers(): Stream<User>
}
在此服务内:
@Service
class MyService(val user: User) {
private val log = LoggerFactory.getLogger(javaClass)
@Transactional(readOnly = true)
fun printNames() {
log.info("here")
user.findAllUsers().use { users ->
users.map { it.firstName }
}
}
}
它只在控制台中打印 here,但没有名称。
似乎 map() 自动关闭了流,但我不知道为什么以及如何解决它。当我放入 use{} 块仅 log.info(users.count()) 时,它会打印存储在数据库中的用户数。所以有一个用户我可以打印。
我的问题是,如何打印给定流中的所有名称?
【问题讨论】:
-
您将 Stream 与 kotlin 一起使用是否有原因?
-
除了懒惰的
map什么都不做,注意这里没有与用户的打印或日志语句,你希望它们如何打印? -
这只是一个例子,因为我需要将用户对象传递给另一个发送到 Kafka 的函数
标签: spring kotlin spring-data