首页 > 解决方案 > Java Spring 创建新记录而不是更新现有记录

问题描述

我正在使用Javaspringboot,我尝试更新现有记录,但它创建了一个新记录,我一直在寻找原因,但我被卡住了。任何建议将不胜感激。我的商店控制器

@GetMapping("/store/update/{idStore}")
    public String updateStoreForm(
            @PathVariable Long idStore,
            Model model
    ) {

        StoreModel store = storeService.getStoreByidStore(idStore);
        List<ManagerModel> listManager = managerService.getManagerList();
        model.addAttribute("listManager", listManager);
        model.addAttribute("store", store);
        return "form-update-store";
    }

    @PostMapping("/store/update")
    public String updateStoreSubmit(
            @ModelAttribute StoreModel store,
            Model model
    ) {
        LocalTime now = LocalTime.now();
        if ( (now.isBefore(store.getWaktuBuka()) || now.isAfter(store.getWaktuTutup())) ){
            storeService.updateStore(store);
            model.addAttribute("idStore", store.getIdStore());
            return "update-store";
        }
        return "error-page";
    }

我的模型:

public class StoreModel implements  Serializable {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long idStore;



@NotNull
@Column(nullable = false)
@DateTimeFormat(pattern = "HH:mm")
private LocalTime waktuBuka;

@NotNull
@Column(nullable = false)
@DateTimeFormat(pattern = "HH:mm")
private LocalTime waktuTutup;

//storecode
@NotNull
@Size(max=10)
@Column(name="kode_store", nullable = false, unique = true)
private String kodeStore;

//relasi OnetoOne ke manager
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "id_manager")
private ManagerModel manager;

@OneToMany(mappedBy = "store")
private List<StorebobateaModel> storebobatea;
}

我的提交表格:

<!DOCTYPE html>
<html lang="en">
<!DOCTYPE html>
<html lang="en" xmlns:th="http://thymeleaf.org">

<head>
    <title>BOBAXIXIXI</title>
    <meta charset="UTF-8">
    <title> Home </title>
    <object th:include="fragments/fragment :: css" th:remove="tag"></object>
    <object th:include="fragments/fragment :: js" th:remove="tag"></object>
</head>
<body style="background-color: #fff3cd">
<nav th:replace="fragments/fragment :: navbar('Store')"></nav>

<div class="card m-4 p-4">
    <div class="card-body">
        <h3 class="card-title text-center" style="color: #533f03">Update Store</h3>
        <br>
        <form th:action="@{/store/update}" th:object="${store}" method="POST">
            Store Name : <br>
            <input required class="form-control"  type="text" name="namaStore"/>
            <br><br>

            Adress : <br>
            <input required class="form-control"  type="text" name="addressStore"/>
            <br><br>

            Waktu Buka : <br>
            <input required class="form-control"  type="time" name="waktuBuka" />
            <br><br>

            Waktu Tutup : <br>
            <input required class="form-control"  type="time" name="waktuTutup" />
            <br><br>

            Manager:
            <select th:field="*{manager}" class="form-control">
                <option th:each="manager : ${listManager}"
                        th:value="${manager.idManager}"
                        th:text="${manager.namaManager}">
                </option>
            </select>
            <br>
            Kode:
            <input required class="form-control"  type="text" name="kodeStore"/>
            <br>
            <br>
            <button class="btn btn-primary" type="submit">Submit</button>
        </form>
    </div>
</div>



</body>
</html>

数据库:

在此处输入图像描述

它创建一个新的“id_store”而不是更新现有的。我该如何解决?

标签: springspring-bootjpa

解决方案


推荐阅读