[英]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.
所有其他值都存储在数据库中。
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.