简体   繁体   English

.netomany 映射在 hibernate spring 启动

[英]onetomany mapping in hibernate spring boot

Entity Exercise Master实体练习大师

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;
    }
    
}

another entity 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;
    }
    
    
}

Repository of both entity两个实体的存储库


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 Page 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> 

while inserting the of all field in html page value foreign key of vm_master which is mapped to primary key of Exercise_master is not getting the value.在 html 页面中插入所有字段时,映射到 Exercise_master 主键的 vm_master 值外键未获取值。 all the other value are getting store in the database.所有其他值都存储在数据库中。

Exercise_master Vm_master练习大师 Vm_master

You are not setting anything to the exercise_master field in the Vm_master entity.您没有为 Vm_master 实体中的 exercise_master 字段设置任何内容。 There's no way for vm_master to know that you are trying to map the exercise master with it. vm_master 无法知道您正在尝试 map 练习大师。 You'll need to set exercise_master field in the Vm_master object before saving the vm_master.在保存 vm_master 之前,您需要在 Vm_master object 中设置 exercise_master 字段。 Try doing something like this尝试做这样的事情

@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";
      }

Let me know if this helps.让我知道这是否有帮助。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM