【发布时间】:2019-01-11 20:38:24
【问题描述】:
所以我使用的是 spring boot 和 kotlin。当我发布一个对象时,如果我在数据库中有一个对象,我会使用 uuid 进行查找。如果我这样做了,那么我修改那个,否则使用一个新实例。
当我查看数据库时,我看到了我的更新版本,然后是一个新的空行。
我可以看到更新的时间戳,如果我使用调试器来操作它保存的值。但是总是有一个新行,有一个新的 ID,所有的字段都是空的
服务
@Service("claimService")
class ClaimService {
@Autowired
lateinit var billingCodeRepository: BillingCodeRepository
@Autowired
lateinit var claimRepository: ClaimRepository
@Autowired
lateinit var specialtyRepository: SpecialtyRepository
@Autowired
lateinit var doctorRepository: DoctorRepository
fun saveClaim(submittedClaim: ClaimDto) {
val existingClaim: Optional<Claim> = claimRepository.findById(submittedClaim.claim.uuid)
if (existingClaim.isPresent)
{
convertClaimFromDto(submittedClaim, existingClaim.get())
} else {
val claim = Claim()
convertClaimFromDto(submittedClaim, claim)
}
}
fun convertClaimFromDto(submittedClaim: ClaimDto, claim: Claim)
{
claim.payProgram = submittedClaim.claim.payProgram
claim.dxCode = submittedClaim.claim.dxCode
claim.facility = submittedClaim.claim.facility
claim.billingDate = DateUtil.convertDate(submittedClaim.claim.claimDate)
claim.patient = convertPatientFromDto(submittedClaim.claim.patient)
for(billingCode in submittedClaim.claim.billedCodes)
{
val billedCode: Optional<BillingCode> = billingCodeRepository.findById(billingCode.code)
if (billedCode.isPresent)
{
val claimCode = BilledCodes()
claimCode.billingCode = billedCode.get()
claimCode.billed = billingCode.amountBilled
claim.billedCodes.add(claimCode)
}
}
//Test values
val testDoc: Optional<ca.billingpro.billingcore.Domain.Doctor> = doctorRepository.findById(1)
claim.doc = testDoc.get()
claim.createdBy = "TestPoint"
claimRepository.save(claim)
}
fun convertPatientFromDto(submittedPatient: ClaimDto.Claim.Patient): Patient
{
val patient = Patient()
patient.DOB = DateUtil.convertDate(submittedPatient.DOB)
patient.name = submittedPatient.name
patient.ohipNo = submittedPatient.ohipNo
patient.ohipVer = submittedPatient.ohipNo
patient.sex = submittedPatient.sex
return patient
}
}
声称
@Entity
data class Claim (
@Id
@GeneratedValue(generator = "uuid2")
@GenericGenerator(name = "uuid2", strategy = "uuid2")
var uuid: String = ""
)
{
@GeneratedValue(strategy = GenerationType.SEQUENCE)
var claimNo: Long = 0
var status: ClaimStatus = ClaimStatus.CREATED
var billingDate: LocalDate = LocalDate.now()
var lastUpdated: LocalDateTime = LocalDateTime.now()
var facility: String = ""
var payProgram: String = ""
var createdAt:LocalDateTime = LocalDateTime.now()
var createdBy: String = ""
var dxCode: String = ""
var notes: String = ""
@ManyToOne(cascade = [CascadeType.ALL])
var patient: Patient = Patient()
@ManyToOne(cascade = [CascadeType.ALL])
var doc: Doctor = Doctor()
@OneToMany(cascade = [CascadeType.ALL], mappedBy = "claim")
var billedCodes: MutableList<BilledCodes> = mutableListOf<BilledCodes>()
@PrePersist
@PreUpdate
fun updateClaim()
{
lastUpdated = LocalDateTime.now()
}
}
存储库
@Repository
interface ClaimRepository : CrudRepository<Claim, String>
行
5bdf8247-5c66-4a9e-9101-450588d5e6b8 2018-01-01 2 2018-08-03 20:41:03 TestPoint 1234 1234 2018-08-03 20:56:41 "" HCP 0 1 47
a9200e84-643b-409a-9c44-2b69aa8a9823 2018-08-03 0 2018-08-03 20:56:41 "" "" "" 2018-08-03 20:56:41 "" "" 0 23 46
16249817-6f4b-46df-a959-ec0595bb06d7 2018-01-01 0 2018-08-03 20:57:03 TestPoint 1234 1234 2018-08-03 20:57:03 "" HCP 0 1 48
6799275b-e067-439e-aec1-2f9166e9b2ba 2018-08-03 0 2018-08-03 20:57:03 "" "" "" 2018-08-03 20:57:03 "" "" 0 24 49
76c2fd49-5a92-4e3a-a8db-d882beb635e2 2018-01-01 0 2018-08-03 21:07:14 TestPoint 1234 1234 2018-08-03 21:07:14 "" HCP 0 1 50
fec419d9-ae9d-4d53-a287-add14b1cd373 2018-08-03 0 2018-08-03 21:07:14 "" "" "" 2018-08-03 21:07:14 "" "" 0 25 51
测试功能
@Component
class ApplicationStartup: ApplicationListener<ApplicationReadyEvent>
{
@Autowired
lateinit var claimService: ClaimService
override fun onApplicationEvent(event: ApplicationReadyEvent) {
//var claimService: ClaimService = ClaimService()
var testStr = "{\"claim\":{\"uuid\": \"5bdf8247-5c66-4a9e-9101-450588d5e610\",\"claimNo\": 123,\"status\": \"CREATED\",\"claimDate\": \"2018-01-01\",\"facility\": \"1234\",\"dxCode\": \"1234\",\"notes\": \"test notes\",\"payProgram\": \"HCP\",\"patient\": {\"name\": \"first last\",\"DOB\": \"1992-05-06\",\"ohipNo\": \"123456789\",\"verCode\": \"AA\",\"sex\": \"M\"},\"billedCodes\": [{\"code\": \"A001A\",\"amountBilled\": 19.21,\"amountPaid\": 0.0}]}}"
val mapper = jacksonObjectMapper()
val claimTest = mapper.readValue<ClaimDto>(testStr)
claimService.saveClaim(claimTest)
}
}
【问题讨论】:
-
请贴出Claim.kt的代码
-
我很累,但我认为它主要是代码......
-
请正确格式化
-
@WilliMentzel 抱歉,格式有什么问题?
-
请正确缩进你的代码
标签: spring-boot kotlin spring-data-jpa