下拉选项值未持久保存到数据库

时间:2017-10-29 16:26:56

标签: java spring

在我的表单中,我有一个如下所示的下拉列表:

<div class="form-group">
        <label class="control-label"> Level</label> <select class="form-control  input-lg" id="activityLevel" name="activityLevel">
         <option value="none"> &nbsp; </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表保存在数据库上的一些值和分数。

1 个答案:

答案 0 :(得分:0)

首先,您遗失的内容是(cascade = CascadeType.ALL)上的@OneToOne

其次,我不确定你是否希望它@OneToOne,因为它会为每个对象创建唯一的选项。可能@OneToMany在这里更适合你。