Невозможно обновить sh базу данных в реальном времени Spring Data + Hibernate + Kotlin - PullRequest
1 голос
/ 05 августа 2020

Я хочу через некоторое время прочитать значение базы данных (lastLocationDate) l oop, используя Kotlin, Spring Data и Hibernate . Проблема в том, что когда я изменяю значение в базе данных, this.productDao.findBySerialNumber ("11223344") не обновляет sh значение в l oop. Мне нужно перезапустить службу, чтобы получить новое значение базы данных. Вот реализация:

TestServiceImpl

@Service
internal open class TestServiceImpl(private val productDao: ProductDao) : TestService {

@Throws(TestException::class)
override fun testProduct() {

    var count = 0

    while ( count < 36 ) {

        val product = this.productDao.findBySerialNumberAndIdProductType("W33DDA", 1L)

        val lastLocationDate = product?.lastLocationDate

        println("lastLocationDate = $lastLocationDate")

        Thread.sleep(5000L)
        count += 1

       }
    }
}

TestService

interface TestService {

    fun testProduct()
}

TestController

@RestController
@RequestMapping("/rest/v1")
class TestController(private val testService: TestService) {

    @GetMapping("/test", consumes = [MediaType.APPLICATION_JSON_VALUE])
    fun testProduct() {
        this.testService.testProduct()
    }

}

ProductDao

interface ProductDao : JpaRepository<Product, Long> {
    fun findBySerialNumber(serialNumber: String): Product?
}

Продукт

@Entity
@Table(name = "Product")
class Product(

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(precision = PRECISION_ID)
    var idProduct: Long? = null,

    @Column(name = "serialNumber", nullable = false, length = MAX_LENGTH_SERIAL_NUMBER)
    var serialNumber: String? = null,

    @Column(name = "lastLocationDate", nullable = true)
    var lastLocationDate: LocalDateTime? = null
) : AbstractPersistence() {

    companion object {
        const val MAX_LENGTH_SERIAL_NUMBER = 6
    }

    override fun equals(other: Any?) = other === this
            || (other is Product && idProduct == other.idProduct)

    override fun hashCode() = idProduct!!.hashCode()
}

Применение

@SpringBootApplication(scanBasePackages = arrayOf("XX"))
@EntityScan("XXXX.infrastructure")
@EnableJpaRepositories("XXXX.infrastructure.dao")
class Application
fun main(args: Array<String>) {
    runApplication<WebApplication>(*args)
}

Кто-нибудь знает, как получить значения из базы данных в реальном времени?

...