【问题标题】:In Spring Roo 2.0, using JSON to update an object creates a new one instead在 Spring Roo 2.0 中,使用 JSON 更新对象会创建一个新对象
【发布时间】:2017-06-15 03:57:03
【问题描述】:

在 Spring Roo 2.0 中,使用 JSON 更新对象会创建一个新对象。

当我尝试使用 JSON 更新对象时,我没有更新原始对象,而是在数据库中获得了一个新对象。我是不是做错了什么?

更改前的票证。设备参考字段为空,所以我想更改它。

{
    "id": 26,
    "version": 0,
    "ticketNumber": "Ticket 1",
    "ticketName": "T1 name",
    "location": "somewhere",
    "description": "desc",
    "customerName": null,
    "projectNumber": "Project 1",
    "opportunity": null,
    "marketSegment": null,
    "createdBy": "me",
    "plannedCreateDate": 1496556000000,
    "createDate": 1496556000000,
    "ticketStatus": "SUBMITTED",
    "ticketObjective": null,
    "equipment": null,
    "ticketResult": null,
    "ticketConclusion": null,
    "pivotuser": null
}

要更改对象,我正在使用: 方法=PUT,url=”http://localhost:8000/json/tickets/26” 标头:Content-Type=application/json,Accept=application/json 正文:

{
    "ticketNumber": "Ticket 1",
    "ticketName": "T1 name",
    "location": "somewhere",
    "description": "desc"
    "customerName": null,
    "projectNumber": "Project 1",
    "opportunity": null,
    "marketSegment": null,
    "createdBy": "me"
    "plannedCreateDate": 1496556000000,
    "createDate": 1496556000000,
    "ticketStatus": "SUBMITTED",
    "ticketObjective": null,
    "equipment": 3,
    "ticketResult": null
    "ticketConclusion": null,
    "pivotuser": null
}

响应:200

再次购票:

"content": [
    {
        "id": 26,
        "version": 0,
        "ticketNumber": "Ticket 1",
        "ticketName": "T1 name",
        "location": "somewhere",
        "description": "desc",
        "customerName": null,
        "projectNumber": "Project 1",
        "opportunity": null,
        "marketSegment": null,
        "createdBy": "me",
        "plannedCreateDate": 1496556000000,
        "createDate": 1496556000000,
        "ticketStatus": "SUBMITTED",
        "ticketObjective": null,
        "equipment": null,
        "ticketResult": null,
        "ticketConclusion": null,
        "pivotuser": null
    },
    {
        "id": 27,
        "version": 0,
        "ticketNumber": "Ticket 1",
        "ticketName": "T1 name",
        "location": "somewhere",
        "description": "desc",
        "customerName": null,
        "projectNumber": "Project 1",
        "opportunity": null,
        "marketSegment": null,
        "createdBy": "me",
        "plannedCreateDate": 1496556000000,
        "createDate": 1496556000000,
        "ticketStatus": "SUBMITTED",
        "ticketObjective": null,
        "equipment": {
            "id": 4,
            "version": 0,
            "manufacturer": "manufacturer 1",
            "masterNumber": "master number 1",
            "ticket": {
                "id": 27,
                "version": 0,
                "ticketNumber": "Ticket 1",
                "ticketName": "T1 name",
                "location": "somewhere",
                "description": "desc",
                "customerName": null,
                "projectNumber": "Project 1",
                "opportunity": null,
                "marketSegment": null,
                "createdBy": "me",
                "plannedCreateDate": 1496556000000,
                "createDate": 1496556000000,
                "ticketStatus": "SUBMITTED",
                "ticketObjective": null,
                "equipment": 4,
                "ticketResult": null,
                "ticketConclusion": null,
                "pivotuser": null
            }
        },
        "ticketResult": null,
        "ticketConclusion": null,
        "pivotuser": null
    }

票 26 没有改变。工单 27 是使用设备参考 = 4 创建的。 我究竟做错了什么。这是我的第一个 JSON 项目。

【问题讨论】:

    标签: json spring spring-roo


    【解决方案1】:

    只需在 JSON 请求正文中包含 idversion 字段。如果缺少其中任何一个,JPA EntityManager 将创建一个新项目(如您所见)。

    祝你好运!

    【讨论】:

    • 这就是答案!谢谢!
    猜你喜欢
    • 2021-06-25
    • 1970-01-01
    • 1970-01-01
    • 2020-06-07
    • 1970-01-01
    • 1970-01-01
    • 2018-12-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多