Невозможно сохранить данные формы, используя Spring и Hibernate - PullRequest
0 голосов
/ 29 октября 2019

Я прошел через это: Невозможно сохранить данные формы в базу данных весной 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...