我一直在使用Java Spring进行一个小项目。我已经在Navicat中将表结构设置为能够“空”值。我还将模型设置为可以为空值。
但是,我仍然无法在该列中输入空值并收到此错误消息。
仅供参考:我正在使用Spring Tool Suite 3.9.7 IDE
Field error in object 'sertifikasihapus' on field 'modified_on': rejected value [];
codes [typeMismatch.sertifikasihapus.modified_on,typeMismatch.modified_on,typeMismatch.java.sql.Timestamp,typeMismatch];
arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [sertifikasihapus.modified_on,modified_on];
arguments [];
default message [modified_on]];
default message [Failed to convert property value of type 'java.lang.String' to required type 'java.sql.Timestamp' for property 'modified_on';
nested exception is org.springframework.core.convert.ConversionFailedException: Failed to convert from type [java.lang.String] to type [@javax.persistence.Column java.sql.Timestamp] for value '';
nested exception is java.lang.IllegalArgumentException: Timestamp format must be yyyy-mm-dd hh:mm:ss[.fffffffff]]]
<script>
$('#idBtnHapusHapus').click(function() {
var vDataRole = $('#idFrmHapusSertifikasi').serialize();
var angka = $('#Id').val();
var nama = $('#idNamaSertifikasi').val();
if ($("#idModifiedOn").val().length < 1) {
$('#idModifiedOn').val(null);
debugger;
$.ajax({
url : './hapussertifikasi/' + angka,
type : 'Put',
data : vDataRole,
dataType : "json",
success : function(model) {
debugger;
window.location = './sertifikasi'
},
error : function(model) {
debugger;
}
});
} else {
debugger;
$.ajax({
url : './hapussertifikasi/' + angka,
type : 'Put',
data : vDataRole,
dataType : "json",
success : function(model) {
debugger;
window.location = './sertifikasi'
},
error : function(model) {
debugger;
}
});
}
});
</script>
<div class="col-xs-12">
<div class="row">
<form id="idFrmHapusSertifikasi" method="post">
<input type="hidden" class="form-control" id="Id" name="id"
placeholder="">
<input type="hidden" class="form-control"
id="idNamaSertifikasi" name="certificate_name" placeholder="">
<input type="hidden" class="form-control" id="idBulanBerlaku"
name="valid_start_month" placeholder="">
<input
type="hidden" class="form-control" id="idTahunBerlaku"
name="valid_start_year" placeholder="">
<input
type="hidden" class="form-control" id="idPenerbit" name="publisher"
placeholder="">
<input type="hidden" class="form-control"
id="idBulanBerlakuS" name="until_month" placeholder="">
<input
type="hidden" class="form-control" id="idTahunBerlakuS"
name="until_year" placeholder="">
<input type="hidden"
class="form-control" id="idCatatan" name="notes" placeholder="">
<input type="hidden" class="form-control" id="idCreateOn"
name="createOn" placeholder="">
<input type="hidden"
class="form-control" id="idCreateBy" name="createBy" placeholder="">
<input type="hidden" class="form-control" id="idModifiedOn"
name="modified_on" placeholder="">
<input type="hidden"
class="form-control" id="idModifiedBy" name="modified_by"
placeholder="">
</form>
<div class="col-xs-2">
<i class="glyphicon glyphicon-trash center" style="font-size: 50px"></i>
</div>
<div class="col-xs-8">
<div class="clTulisanHapus center" id="idTulisanHapus">
<p>Anda Yakin ingin menghapus Sertifikasi</p>
<!-- I WANTED THE CERTIFICATE NAME TO BE HERE -->
<div th:each="item:${oneprofil}">
<b><p th:text="${item.certificate_name}+' ?'"></p></b>
</div>
</div>
</div>
</div>
</div>
<div class="col-md-offset-8">
<div class="btn-group">
<input type="hidden" id="idDataId"> <input type="hidden"
id="idDataNama">
<button type="button" id="idBtnHapusBatal" data-dismiss="modal"
class="btn clBtnMdlHapus">Tidak</button>
<button type="button" id="idBtnHapusHapus" data-id="${item.id}"
class="btn clBtnMdlHapus">Ya</button>
</div>
</div>
答案 0 :(得分:0)
看起来您的值不是null,而是空的String(“”)。您可以使用关键字空而不使用任何“引号”。
有关更多信息,请参见此question:
在实践中,您可以简单地假装它是“仅仅是可以用于任何引用类型的特殊文字”。
答案 1 :(得分:0)
[无法将类型'java.lang.String'的属性值转换为 属性“ modified_on”的必需类型“ java.sql.Timestamp”;
您将以空字符串而不是null的形式接收该值,这会导致类型不匹配并导致问题。
从HTML中,我看到您正在将其作为隐藏参数发送。还有另一种方法可以在Spring Boot中自动设置创建日期和修改日期。
在实体下面使用
@PrePersist
protected void prePersist() {
createdAt = set value here
}
@PreUpdate
protected void preUpdate() {
modifiedOn = set valye here
}
休眠
@CreationTimestamp
-Documentation @UpdateTimestamp
-Documentation Spring Data JPA
@CreatedDate
-Documentation @LastModifiedDate
-Documentation