[英]SpringBoot does not save Set in entity
我的 TimeTrail 類有一組 TimeTrailStage。 保存后,如果查詢對象,舞台上的 timetrail_id 為空。 所以階段是空的。 我不知道我做錯了什么。 我查看了 OneToMany/ManyToOne 關系,但據我所知它是正確的。
時間軌跡類
package com.verhees.cm.model.competition;
import com.verhees.cm.model.stage.TimeTrialStage;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.experimental.SuperBuilder;
import javax.persistence.Entity;
import javax.persistence.OneToMany;
import java.util.Set;
@Entity
@NoArgsConstructor
@AllArgsConstructor
@SuperBuilder
@Getter
@Setter
public class TimeTrail extends Competition {
@OneToMany(mappedBy = "competitie")
private Set<TimeTrialStage> stages;
}
競賽類
package com.verhees.cm.model.competition;
import lombok.*;
import lombok.experimental.SuperBuilder;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.validation.constraints.Size;
@Entity
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@Getter
@Setter
public abstract class Competition {
@Id
@Size(min = 3, max = 15)
private String name;
}
TimeTrailStage.class
public class TimeTrialStage extends Stage {
@ManyToOne
@JoinColumn(name="timetrail_id", nullable = false)
private TimeTrail competitie;
@ManyToMany
@JoinTable(
name = "team_stage",
joinColumns = @JoinColumn(name = "stage_id"),
inverseJoinColumns = @JoinColumn(name = "team_id"))
private List<Team> teams = new ArrayList<>();
@OneToMany(cascade = CascadeType.ALL)
private List<Score> scores;
@OneToMany(cascade = CascadeType.ALL)
private List<TimeTrialStagePrediction> predictions;
}
舞台.class
package com.verhees.cm.model.stage;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.experimental.SuperBuilder;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import java.util.Date;
import static javax.persistence.GenerationType.IDENTITY;
@Entity
@AllArgsConstructor
@NoArgsConstructor
@SuperBuilder
@Getter
@Setter
public abstract class Stage {
@Id
@GeneratedValue(strategy = IDENTITY)
private Long id;
private Date date;
}
數據庫運行在 Mysql、MySQL5InnoDBDialect 上。
您應該嘗試在競賽類上使用@MappedSuperclass 。 現在休眠不知道如何將 id(名稱)映射到數據庫模型。
在這里您可以找到示例/文檔: https : //docs.oracle.com/javaee/5/api/javax/persistence/MappedSuperclass.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.