Я совсем новичок в интеграции Spring и Thymeleaf, так что терпите меня:
У меня проблемы с получением данных из моего шаблона Thymeleaf с использованием модели JPA. Я пытался использовать стратегии последовательной генерации и генерации идентичности, но он даже не позволяет мне загрузить страницу
Я пытался создать совершенно новую переменную, как было показано ранее, но это явно не проблема. Я знаю, что проблема может исходить из ссылок Thymeleaf из HTML, но я совершенно запутался;Есть ли способ автоматического создания идентификатора? Он даже не позволяет мне добавить значение в форму в виде идентификатора
class Admin(@Id @GeneratedValue(strategy = GenerationType.IDENTITY) var id: Long, var firstName: String, var lastName: String, var login: String, var password: String) {
@PostMapping("/addstuff")
fun addAdmin(@ModelAttribute(name = "admin") admin: Admin, result: BindingResult, model: Model): String {
val newAdmin: Admin = Admin(admin.id, admin.firstName, admin.lastName, admin.firstName[0].plus(admin.lastName), encoder.encode("password"))
adminRepository.save(newAdmin)
return "adminadd"
}
form action="#" data-th-action="@{/addstuff}" th:object="${admin}" method="post">
<div class="row justify-content-center" id="mainBody">
<div class="col-8">
<div id="student0">
<div class="row">
<div class="col">
Administrator Information
</div>
</div>
<div class="row">
<div class="col">
<input th:field="*{firstName}" type="text" class="form-control" placeholder="First name">
</div>
<div class="col">
<input th:field="*{lastName}" type="text" class="form-control" placeholder="Last name">
</div>
<div class="col">
<input type="number" class="form-control" placeholder="Administrator ID number">
</div>
</div>
<div class="row">
<div class="col">
<label>Role
<div class="form-check">
<input class="form-check-input" type="radio" name="exampleRadios" id="adminRadio"
value="option1" checked>
<label class="form-check-label" for="adminRadio">
Administrator
</label>
</div>
<div class="form-check">
<input class="form-check-input" type="radio" name="exampleRadios" id="profRadio"
value="option2">
<label class="form-check-label" for="profRadio">
Professor
</label>
</div>
</label>
</div>
</div>
<hr>
</div>
<input id="submitAdmin" type="submit" value="Add Administrator">
<!-- <button id="submitAdmin">Add Administrator</button>-->
</div>
</div>
</form>
Ожидаемый результат должен состоять в сохранении данных в моем локальном БД, но в результате ошибки яget это:
'admin' on field 'id': rejected value [null]; codes [typeMismatch.admin.id,typeMismatch.id,typeMismatch.long,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [admin.id,id]; arguments []; default message [id]]; default message [Failed to convert value of type 'null' to required type 'long'; nested exception is org.springframework.core.convert.ConversionFailedException: Failed to convert from type [null] to type [@javax.persistence.Id @javax.persistence.GeneratedValue long] for value 'null'; nested exception is java.lang.IllegalArgumentException: A null value cannot be assigned to a primitive type]]
Я знаю, что это связано со значением id, но я застрял в том, как я генерирую значение для него. Я использую встроенную базу данных h2, если кому-то интересно. Заранее спасибо