In Spring Roo 2.0, using JSON to update an object creates a new one instead.
When I try to update an object using JSON, instead of updating the original object, I get a new one in the database. Am I doing something wrong?
The ticket before making changes. The Equipment reference field is null, so I want to change that.
{
"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
}
To change the object, I’m using: Method=PUT, url=” http://localhost:8000/json/tickets/26” Headers: Content-Type=application/json, Accept=application/json Body:
{
"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
}
Response: 200
Get tickets again:
"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
}
Ticket 26 has not changed. Ticket 27 was created with the Equipment reference = 4. What am I doing wrong. This is my first JSON project.
Just include id
and version
field in JSON request body. If any of that is missing JPA EntityManager will create a new item (as you found).
Good luck!