这里我们有一个清单类,其中包括学生和教师的列表,两者都可以为空。
class Manifest{
@ElementCollection(fetch = FetchType.EAGER)
@CollectionTable(name = "MANIFEST_STUDENT")
List<String> students = new ArrayList<String>();
@ElementCollection(fetch = FetchType.EAGER)
@CollectionTable(name = "MANIFEST_TEACHER")
List<String> teachers = new ArrayList<String>();;
@ElementCollection(fetch = FetchType.EAGER)
@CollectionTable(name = "MANIFEST_OTHERS")
List<String> others = new ArrayList<String>();;
}
在 UI 上,有两个multiple select
,一个用于student
,一个用于teacher
让用户选择当前清单。
这是问题所在:
当用户deselect
全部students
或teachers
从列表中(意味着从当前删除所有学生或教师manifest
)并单击保存时,不幸的是,从 UI 和数据库中无法保存任何内容,它显示multiselect
所选的外观与SAME
以前一样。
从服务层看,代码就是这样。
manifest.merge();
看来我们必须保留at least one
学生或教师的收藏字段才能使更改有效。那么这里发生了什么,解决方案是什么?顺便说一句,我们在 Openjpa 上。