Я пытаюсь перебрать поле ввода через GET в Java Controller и thymeleaf, но он дает мне ошибку «результат возвращает более одного элемента»
Мой GET может получить массив строк Идентификаторы, но я не могу поместить их в свою форму, я буду использовать свою форму, чтобы отправить ее и удалить массив идентификаторов строк. Это работает, если пользовательский ввод только один, но когда пользовательский ввод становится 2 или более, он показывает ошибку "результат возвращает более одного элемента"
Это мой код на Java Контроллер
@RequestMapping(value="/delete-asset", method = RequestMethod.GET)
public String deleteAsset(@RequestParam String[] assetID, Model model) {
//to populate the form
model.addAttribute("DeleteCategoryObject", assetService.getAssetInfo(assetID));
return "delete-asset";
}
Это мой код на Html Форма
<form method="POST" name="deleteFormAdd" id="deleteFormAdd" th:object="${DeleteCategoryObject}"enctype="multipart/form-data">
<input type="hidden" name="_csrf" th:value="${_csrf.token}" />
//The code can't iterate the String of array given by the GET
<input type="hidden" th:field="*{assetID}" />
//This button is for submitting the String of array ID to be deleted
<input type="button" class="btn btn-primary btn-block" value="Yes" th:onclick="'javascript:submitForm(\'deleteFormAdd\',\''+@{/delete-asset}+'\')'" />
<button type="reset" onclick="window.location.href = 'manage-assets.html';" class="btn btn-default btn-block"> Cancel</button>
</form>
Код может принять эту ссылку
Но он показывает ошибку «результат возвращает более одного элемента», если заданный идентификатор равен 2 или более
Полная ошибка
org .springframework.dao.IncorrectResultSizeDataAccessException: результат возвращает более одного элемента; вложенное исключение - javax.persistence.NonUniqueResultException: результат возвращает более одного элемента
Java DAO / Query
@Query("From AssetCategory A WHERE A.assetID IN (:assetID)")
public AssetCategory getAssetInfo(@Param("assetID") String[] assetID);
AssetCategory
@Entity
@Table(name = "ASSET_TYPE")
public class AssetCategory implements Serializable{
private static final long serialVersionUID = 595169758417136780L;
@Id
@Column(name = "ASSET_ID")
@GenericGenerator(name="uuid", strategy="uuid")
@GeneratedValue(generator="uuid")
private String assetID;
@Column(name = "ASSET_TYPE")
private String assetType;
@Column(name = "CATEGORY")
private String category;
@Column(name = "DESCRIPTION")
private String description;
@Column(name = "CREATED_BY")
private String createdBy;
public AssetCategory() {
super();
public AssetCategory(String assetID, String assetType, String category, String description, String createdBy) {
super();
this.assetID = assetID;
this.assetType = assetType;
this.category = category;
this.description = description;
this.createdBy = createdBy;
}
//getters setters below
public String getAssetID() {
return assetID;
}
public void setAssetID(String assetID) {
this.assetID = assetID;
}
public String getAssetType() {
return assetType;
}
public void setAssetType(String assetType) {
this.assetType = assetType;
}
public String getCategory() {
return category;
}
public void setCategory(String category) {
this.category = category;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getCreatedBy() {
return createdBy;
}
public void setCreatedBy(String createdBy) {
this.createdBy = createdBy;
}
Контроллер для Java Удалить сообщение
@RequestMapping(value = "/delete-asset", method = RequestMethod.POST)
public @ResponseBody String deleteAsset(@ModelAttribute AssetCategory assetCategory) {
JsonObject result = new JsonObject();
assetService.deleteAssets(assetCategory.getAssetID());
result.addProperty("result", "Success");
result.addProperty("status", 1);
result.addProperty("message", "Asset Deleted!");
return result.toString();
}
Запрос на удаление POST
@Query("Delete From AssetCategory A WHERE A.assetID IN (:assetID)")
List<AssetCategory> deleteAssets(@Param("assetID") String[] assetID);
Удалить службу POST
@Override
public List <AssetCategory> deleteAssets(String[] assetID) {
return dao.deleteAssets(assetID);
}
Функция отправки формы
function submitForm(formID, url){
var formData = new FormData($("#" + formID)[0]);
$.ajax({
dataType: 'json',
url: url,
data : formData,
type : "POST",
enctype : "multipart/form-data" ,
processData : false,
contentType : false,
success : function(data) {
if (data.status == 1) {
openAlertDialog("Success", "The Asset type has been deleted!", "Continue", "manage-assets");
} else {
openAlertDialog("Error", data.message, "Continue", "manage-assets");
}
},
error : function(data) {
openAlertDialog("Error", data.message, "Continue", "manage-assets");
},
});
}