簡體   English   中英

.netomany 映射在 hibernate spring 啟動

[英]onetomany mapping in hibernate spring boot

實體練習大師

import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
@EnableAutoConfiguration
@Entity
@Table(name = "exercise_master")
public class Exercise_Master {

    private static final long serialVersionUID =1L;
    
    @Id
    @GeneratedValue(strategy= GenerationType.IDENTITY)
    @Column(name="Ex_id")
    private Integer Ex_id;
    
    
    @Column(name="Problem_statement")
    private String prob_statement;

    
    
    @OneToMany(cascade=CascadeType.ALL, targetEntity = Vm_Master.class)
    @JoinColumn(name="fk_Ex_id",referencedColumnName="Ex_id")
    private List<Vm_Master> vm_master;



    public Integer getEx_id() {
        return Ex_id;
    }



    public void setEx_id(Integer ex_id) {
        Ex_id = ex_id;
    }



    public String getProb_statement() {
        return prob_statement;
    }



    public void setProb_statement(String prob_statement) {
        this.prob_statement = prob_statement;
    }



    public List<Vm_Master> getVm_master() {
        return vm_master;
    }



    public void setVm_master(List<Vm_Master> vm_master) {
        this.vm_master = vm_master;
    }
    
}

另一個實體 Vm_master


import org.springframework.transaction.annotation.Transactional;

@Entity
@Transactional
@Table(name="vm_master")
public class Vm_Master {

    private static final long serialVersionUID =1L;
    
    @Id
    @GeneratedValue(strategy= GenerationType.AUTO)
    @Column(name="vm_id")
    private Long Vm_id;
    
    @Column
    private String Vm_uuid;
    
    @Column
    private String Vm_name;
    
    @ManyToOne
    @JoinColumn(name="fk_Ex_id")
    private Exercise_Master exercise_master;

    public Long getVm_id() {
        return Vm_id;
    }

    public void setVm_id(Long vm_id) {
        Vm_id = vm_id;
    }

    public String getVm_uuid() {
        return Vm_uuid;
    }

    public void setVm_uuid(String vm_uuid) {
        Vm_uuid = vm_uuid;
    }

    public String getVm_name() {
        return Vm_name;
    }

    public void setVm_name(String vm_name) {
        Vm_name = vm_name;
    }

    public Exercise_Master getExercise_master() {
        return exercise_master;
    }

    public void setExercise_master(Exercise_Master exercise_master) {
        this.exercise_master = exercise_master;
    }
    
    
}

兩個實體的存儲庫


public interface Exercise_MasterRepo extends JpaRepository<Exercise_Master,Long>{

}
//
public interface Vm_MasterRepo extends JpaRepository<Vm_Master, Long>{

}


Controller 
@PostMapping("/saveExercise")
      public String saveExercise(@ModelAttribute Exercise_Master ex,@ModelAttribute Vm_Master vm)
      {
          exer_repo.save(ex);
          vm_repo.save(vm);
          return "redirect:/AddExercise";
      }

HTML 頁

<form th:action="@{/saveExercise}" th:object="${ex}" method="POST">
        <div class="form-group">
    <label for="prob_statement">Problem Statement :</label>
    <textarea class="form-control" id="prob_statement" name="prob_statement"  rows="2" required ></textarea><br>
    <label for="Vm_name">Vm_name:</label>
    <textarea class="form-control" id="Vm_name" name="Vm_name"   required ></textarea><br>
   
    <label for="Vm_uuid">Vm_uuid:</label>
    <textarea class="form-control" id="Vm_uuid" name="Vm_uuid"   required ></textarea><br>
                <button type="submit" id="submit" class="btn btn-primary">Save</button>
            </div>
            </form> 

在 html 頁面中插入所有字段時,映射到 Exercise_master 主鍵的 vm_master 值外鍵未獲取值。 所有其他值都存儲在數據庫中。

練習大師 Vm_master

您沒有為 Vm_master 實體中的 exercise_master 字段設置任何內容。 vm_master 無法知道您正在嘗試 map 練習大師。 在保存 vm_master 之前,您需要在 Vm_master object 中設置 exercise_master 字段。 嘗試做這樣的事情

@PostMapping("/saveExercise")
      public String saveExercise(@ModelAttribute Exercise_Master ex,@ModelAttribute Vm_Master vm)
      {
          exer_repo.save(ex);
          vm.setExercise_master(ex);
          vm_repo.save(vm);
          return "redirect:/AddExercise";
      }

讓我知道這是否有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM