Весенняя загрузка добавить несколько строк - PullRequest
0 голосов
/ 18 октября 2019

Я пытаюсь сохранить несколько записей в базе данных, но не могу сохранить. Я могу сохранить только 1 строку за раз. Я следовал этому примеру ссылки ниже. но все еще получаю ошибку:

Spring mvc добавляет несколько строк

Controller.java

Это мой класс контроллера:

   @PostMapping("/saveCREfforts")
    public String saveCREfforts(@ModelAttribute("creffortdetailsForm") CREffortDetailsListForm cREffortDetailsListForm,, Model model, BindingResult bindingResult) {


        for(CREffortDetails crEfforts : cREffortDetailsListForm.getcREffortDetails()) {
            System.out.println(" crEffortr.getCrNumber   :::: :  "+crEfforts.getCrNumber());

            cREffortsDetailsService.save(crEfforts); 
         }



        return "AddCREfforts";
    }

JSP

Это страница JSP.

Я использовал <form:form> теги для Spring Boot.

  <form:select name="task"  style="width:100%;" path="CREffortDetails[0].task" value="task">

    <form:option value="Documentation Creation / Updation"  >Documentation Creation / Updation</form:option>
    <form:option value="Design and development">Design and development</form:option>
    <form:option value="Build">Build</form:option>
    <form:option value="Deployment to lower environments (AM2/AM3/QA/TSTB)">Deployment to lower environments (AM2/AM3/QA/TSTB)</form:option>
    <form:option value="Unit Testing">Unit Testing</form:option>
    <form:option value="System Testing">System Testing</form:option>
    <form:option value="Unit Testing">Unit Testing</form:option>
    <form:option value="Review Efforts">Review Efforts</form:option>
    <form:option value="UAT Testing Support">UAT Testing Support</form:option>
    <form:option value="Deployment to Production">Deployment to Production</form:option>
  </form:select>          
</td>
<td>
   <form:select name="weekNumber"  style="width:100%;" path="CREffortDetails[0].weekNumber" value="weekNumber">
    <form:option value="WK39">WK39</form:option>
    <form:option value="WK40">WK40</form:option>
    <form:option value="WK41">WK41</form:option>
    <form:option value="WK42">WK42</form:option>
    <form:option value="WK43">WK43</form:option>
    <form:option value="WK44">WK44</form:option>
  </form:select>
            </td>

            <td>
            <form:input path="CREffortDetails[0].plannedHours"  value="" style="width:100%;"  />

            </td>
            <td>
            <form:input path="CREffortDetails[0].actualHours" value="" style="width:100%;" />

            </td>

         <form:input type="hidden" path="CREffortDetails[0].crNumber" style="width:100%;" />

        </tr>

         <tr>

            <td>

  <form:select name="task"  style="width:100%;" path="CREffortDetails[1].task" value="task">

    <form:option value="Documentation Creation / Updation"  >Documentation Creation / Updation</form:option>
    <form:option value="Design and development">Design and development</form:option>
    <form:option value="Build">Build</form:option>
    <form:option value="Deployment to lower environments (AM2/AM3/QA/TSTB)">Deployment to lower environments (AM2/AM3/QA/TSTB)</form:option>
    <form:option value="Unit Testing">Unit Testing</form:option>
    <form:option value="System Testing">System Testing</form:option>
    <form:option value="Unit Testing">Unit Testing</form:option>
    <form:option value="Review Efforts">Review Efforts</form:option>
    <form:option value="UAT Testing Support">UAT Testing Support</form:option>
    <form:option value="Deployment to Production">Deployment to Production</form:option>
  </form:select>          
</td>
<td>
   <form:select name="weekNumber"  style="width:100%;" path="CREffortDetails[1].weekNumber" value="weekNumber">
    <form:option value="WK39">WK39</form:option>
    <form:option value="WK40">WK40</form:option>
    <form:option value="WK41">WK41</form:option>
    <form:option value="WK42">WK42</form:option>
    <form:option value="WK43">WK43</form:option>
    <form:option value="WK44">WK44</form:option>
  </form:select>
            </td>

            <td>
            <form:input path="CREffortDetails[1].plannedHours"  value="" style="width:100%;"  />

            </td>
            <td>
            <form:input path="CREffortDetails[1].actualHours" value="" style="width:100%;" />

            </td>

         <form:input type="hidden" path="CREffortDetails[1].crNumber" style="width:100%;" />

        </tr>

        </table>



<div align="center">
<table  align="right">
<tr>
<!-- <input type="submit" value="SAVE" /> -->
 <button class="button"><span>SAVE</button>&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp
<button class="button"><span>CLEAR</button>
</tr>
</table>
<br><br>

</form:form>

Класс бина

Это класс сущности. Мы пытаемся сохранить данные формы в базе данных с помощью JPA.

@Entity
@Table(name = "CREFFORTFORM")
public class CREffortDetails {

        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
     private Long id;
     private String crNumber;
     private String description;
     private String task;
     private String weekNumber;
     private String plannedHours;
     private String actualHours;
     private String totalPlannedHours;
     private String totalActualHours;

        @ManyToMany(mappedBy = "creffortdetails")
        private Set<CRDataForm> crdataform;


    public Set<CRDataForm> getCrdataform() {
            return crdataform;
        }
        public void setCrdataform(Set<CRDataForm> crdataform) {
            this.crdataform = crdataform;
        }
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    public String getCrNumber() {
        return crNumber;
    }

Форма класса бина со списком:

Это форма списка для итерации нескольких строкзаписей.

public class CREffortDetailsListForm {

    private List<CREffortDetails> cREffortDetails;


    public List<CREffortDetails> getcREffortDetails() {
        return cREffortDetails;
    }

    public void setcREffortDetails(List<CREffortDetails> cREffortDetails) {
        this.cREffortDetails = cREffortDetails;
    }



}`

Я получаю сообщение об ошибке ниже JSP при загрузке страницы.

Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.

Fri Oct 18 17:46:57 IST 2019
There was an unexpected error (type=Internal Server Error, status=500).
Invalid property 'CREffortDetails[0]' of bean class [com.demandTracker.auth.model.CREffortDetails]: Bean property 'CREffortDetails[0]' is not readable or has an invalid getter method: Does the return type of the getter match the parameter type of the setter?
org.springframework.beans.NotReadablePropertyException: Invalid property 'CREffortDetails[0]' of bean class [com.demandTracker.auth.model.CREffortDetails]: Bean property 'CREffortDetails[0]' is not readable or has an invalid getter method: Does the return type of the getter match the parameter type of the setter?
    at 

1 Ответ

0 голосов
/ 18 октября 2019

Пожалуйста, предоставьте код от cREhapsDetailsService.

Если вы используете SpringDataJpa, что, я думаю, может быть связано с тем, что вы добавили этот тег к вопросу, вы сможете использовать метод <S extends T> List<S> saveAll(Iterable<S> entities); вместо сохранения одного за раз, используя <S extends T> S save(S entity);method.

Если вы хотите настроить производительность с помощью пакетной вставки в режиме гибернации, попробуйте настроить это свойство:

spring:
  jpa:
    properties:
      hibernate.jdbc.batch_size: 15
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...