请教list和set之间的区别!

我在程序的双向one-to-many的关系(并且在one方声明了inverse='true')中采用了list,但问题出来了:当我直接save一个many方的对象时(关联属性已经用one方的对象A赋值),执行成功,但是查看表中的数据时却发现在list元素中声明的index属性对应的列的值为空;接下来当我load这个A对象时,程序报错!为什么?
很明显,使用set时肯定是不会出现这样的问题的!
疑问:list是否只适合用在单向的one-to-many关系中?另外想请教list和set之间的内在区别到底是什么?除了list是顺序集合,set是散列,除了公认的list比set快,在多的一方还要创建一个index列之外,还有别的区别吗?
请不吝将你的理解告诉大家,谢谢!

Set中不允许重复或空,所以使用持久化工作推荐使用Set,而不是List。

List适合对内存状态 Cache等操作,而非持久化。