Я прошел через это: Невозможно сохранить данные формы в базу данных весной mvc , но не решил, в чем заключается моя проблема. Теперь я создал две сущности. Один (Expensegroup) должен использоваться как раскрывающийся список для другого (Расходы). Но всякий раз, когда я пытался сохранить, он генерирует эту ошибку:
Field error in object 'expense' on field 'expenseGroup': rejected value [3]; codes [typeMismatch.expense.expenseGroup,typeMismatch.expenseGroup,typeMismatch.com.pebnic.financemgr.entity.ExpenseGroup,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [expense.expenseGroup,expenseGroup]; arguments []; default message [expenseGroup]]; default message [Failed to convert property value of type 'java.lang.String' to required type 'com.pebnic.financemgr.entity.ExpenseGroup' for property 'expenseGroup'; nested exception is java.lang.IllegalStateException: Cannot convert value of type 'java.lang.String' to required type 'com.pebnic.financemgr.entity.ExpenseGroup' for property 'expenseGroup': no matching editors or conversion strategy found]].
См. Entity- ExpenseGroup:
@Entity
@Table(name="tab_expgroup")
public class ExpenseGroup {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="id")
private int id;
@Column(name="code")
@NotNull(message="Expense Group Code is required")
@Size(min=3,message="Expense Group Code must be minimum of 3 Characters")
private String code;
@Column(name="name")
@NotNull(message="Expense Group Name is Required")
private String name;
@Column(name="flag")
private String flag;
getters &Сеттеры
Субъект расходов
@Entity
@Table(name="tab_expenses")
public class Expense {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="id")
private int id;
@Column(name="item")
private String item;
@Column(name="expense_date")
private String expenseDate;
@Column(name="amount")
private double amount;
@Column(name="narration")
private String narration;
//Foreign Key Mapping
@OneToOne(cascade=CascadeType.ALL)
@JoinColumn(name="expensegroup_id")
private ExpenseGroup expenseGroup;
Getters & setters
**Controller:**
@GetMapping("/showForm")
public String showFormAdd(Model theModel) {
Expense theExpense = new Expense();
List<ExpenseGroup> theExpenseGroup = expenseService.getExpenseGroupList();
theModel.addAttribute("expense", theExpense);
theModel.addAttribute("expenseGroups", theExpenseGroup);
return "expense-form";
}
@PostMapping("/saveExpense")
public String saveExpense(@ModelAttribute("expense")Expense theExpense) {
expenseService.saveExpense(theExpense);
return "redirect:/expense/list";
}
DAOImplementation:
@Override
public void saveExpense(Expense theExpense) {
Session currentSession = sessionFactory.getCurrentSession();
currentSession.saveOrUpdate(theExpense);
}
См. Форму:
form:select path="expenseGroup" class="form-control">
<form:option value="">Select the Category</form:option>
<c:forEach items="${expenseGroups}" var="grp">
<form:option value="${grp.id}">${grp.name}</form:option>
</c:forEach>
</form:select>
Это вывод приведенной выше формы:
<select id="expenseGroup" name="expenseGroup" class="form-control">
<option value="">Select the Category</option>
<option value="1">Beverages</option>
<option value="3">Cooking</option>
<option value="6">Self Development</option>
<option value="2">Grains</option>
<option value="5">Personal Allowance</option>
<option value="15">Self Training</option>
<option value="4">Utility</option>
</select>
Проблема: каждый раз, когда я пытаюсь сохранить, он выдает ошибку отклоненного значения, независимо от того, какие опции я выбираю.Как я могу решить эту проблему, чтобы сохранить / сохранить данные, зная, что я сохраняю данные с помощью языка запросов Hibernate, вызывая функцию saveorUpdate. Я новичок в Spring и hibernate.