我无法想到问题的更好的标题,但我的问题并不是将两个不同的键映射到一个值。我知道该怎么做。我的问题是,有没有办法让一个特定的键 - 键对映射到一个值?
例如,我正在尝试实施在线评分系统。该数据库的考试由考试键入。 "中期1"映射到Midterm1考试实例。每个考试都有一个解决方案手册。然后我想在数据库中添加学生的答题纸,并比较学生对解决方案手册的答案来计算分数。
我正在实施AnswerSheet类,并且被这个问题困扰了。学生的答案对应于某个考试中的某个问题。有没有办法让examId和questionNumber(合并)成为映射到学生写下的答案的关键?将问题编号映射到答案是不够的,因为中期1的问题1与期中考试的问题1不同。我试图想办法实现这个:
exam1 question1 ---------> "学生回答考试1"
exam1 question5 ---------> "学生回答考试1"
exam2 question1 ---------> "学生回答考试2"
我希望我已经充分解释了我的难题。希望有人可以指出我正确的方向。
答案 0 :(得分:1)
假设“考试”,“问题”和“学生答案”是通过ORM映射到数据库的对象,并且每个都有一个主键,您可以连接“考试”和“问题”的2个主键转换为字符串值,并使用此值存储“学生答案”。像这样:
{{1}}
请注意,如果您遇到主键号冲突,则需要前缀“EXAM:”和“QST:”。
答案 1 :(得分:0)
查看Guava中的课程Table。
将一组有序键(称为行键和列键)与单个值相关联的集合。
如果您不想使用Guava,您可以使用List(例如ArrayList)来包含这两个键,然后使用该组合键来访问您的地图。请参阅List.equals(..)和List.hashcode(),了解他们是否正确启用此功能。