在我的表单中,我有一个如下所示的下拉列表:
<div class="form-group">
<label class="control-label"> Level</label> <select class="form-control input-lg" id="activityLevel" name="activityLevel">
<option value="none"> </option>
<option value="1"> First</option>
<option value="2"> Second</option>
<option value="3">Third</option>
<option value="4">Fourth</option>
</select>
</div>
我有两节课: 具有以下字段的Levels类:
@Entity
public class ActivityLevel {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "activitylevel_id")
private Long id;
@Lob
@Column(columnDefinition="TEXT")
private String activityLevel;
private Double score;
//getters and setters
Survey类中的一个字段是:
private String name;
private String lastName;
@OneToOne
@JsonManagedReference
@JoinColumn(name = "activitylevel_id")
private ActivityLevel activityLevel;
为此Survey类扩展JpaRepository,我使用save(survey)来保存对象。 每个其他字段都会持久保存到数据库,但Option的值除外。
我这样做的原因是如果选择了选项值1并且我对该字段有1 ..我将需要访问其中id = 1的ActivityLevel的分数。如果我将字段更改为私有String activityLevel;没有外键或一对一映射,则值将被保存。
也许有更好的方法来做到这一点? 因为我想要的是事先为ActivityLevel表保存在数据库上的一些值和分数。
答案 0 :(得分:0)
首先,您遗失的内容是(cascade = CascadeType.ALL)
上的@OneToOne
。
其次,我不确定你是否希望它@OneToOne
,因为它会为每个对象创建唯一的选项。可能@OneToMany
在这里更适合你。