gpt4 book ai didi

java - 为什么 Arraylist 作为一个长而随机的字符串存储在 H2 数据库中?

转载 作者:行者123 更新时间:2023-12-02 18:28:27 31 4
gpt4 key购买 nike

我在 Spring-Boot (Kotlin) 项目中创建了一个实体(模型或数据类),其中包含一个类型为 Arraylist 的字段,但是当我从 Postman 发送 JSON 格式的数组数据时,该数组存储在数据库中作为一个长的随机字符串。

当我尝试从数据库中检索数据时,我得到了格式完美的实际数组。

我的问题是为什么ArrayList会这样存储在H2数据库中???

评估.kt

@Entity
data class Evaluation (
@Id val id : String,
val timeStamp : Long,
val symptoms : ArrayList<String>,
val travelHistory : Boolean,
val contactWithCovidPatient : Boolean,
val evaluatedBy : String,
var evaluationPercentage : String? = null,
@ManyToOne var user: User? = null
)

EvaluationController.kt

@RestController
class EvaluationController (val evaluationService: IEvaluationService) {

@PostMapping("evaluate/{userId}")
fun evaluateUser(@PathVariable userId : String, @RequestBody evaluation: Evaluation) : ResponseEntity<Evaluation> =
ResponseEntity.ok().body(evaluationService.addEvaluation(evaluation, userId))

}

请求主体 JSON

{
"id":"e_01",
"timeStamp":"123456789",
"pinCode":"123457",
"travelHistory":true,
"contactWithCovidPatient":true,
"evaluatedBy":"u_01",
"symptoms": ["Fever","Cough"]
}

响应 JSON

{
"id": "e_01",
"timeStamp": 123456789,
"symptoms": [
"Fever",
"Cough"
],
"travelHistory": true,
"contactWithCovidPatient": true,
"evaluatedBy": "u_01",
"evaluationPercentage": "95",
"user": {
"id": "u_01",
"name": "abc01",
"phoneNumber": "9876543210",
"pinCode": "123457",
"covidResult": "Positive"
}
}

H2 数据库表

enter image description here

最佳答案

这是一个十六进制字符串,表示序列化的 ArrayList 对象。参见 Serializable Objects有关 Java 中对象序列化的详细信息。

运行以下代码会产生相同的结果:

List<String> symptoms = new ArrayList<>(Arrays.asList("Fever", "Cough"));
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
ObjectOutputStream objectOutputStream = new ObjectOutputStream(byteArrayOutputStream);
objectOutputStream.writeObject(symptoms);
byte[] serializedObject = byteArrayOutputStream.toByteArray();
String hex = Hex.encodeHexString(serializedObject); // Apache Commons Codec
System.out.println(hex);
aced0005737200136a6176612e7574696c2e41727261794c6973747881d21d99c7619d03000149000473697a657870000000027704000000027400054665766572740005436f75676878

关于java - 为什么 Arraylist<String> 作为一个长而随机的字符串存储在 H2 数据库中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69764425/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com