我有一个Answer的集合(IList<Answer>
)和两个表(Answer和AnswerHist)。
我想按照以下方式做点什么:
Get the current answers from db.
save(Answers, "AnswerHist");
delete(Answers, "Answer");
Answers = questions
.Select(x => new Answer(response)
{
QuestionID = x.QuestionID,
Value = x.Answer.Value,
Bool = x.Answer.Bool,
Date = x.Answer.Date,
Number = x.Answer.Number,
Text = x.Answer.Text
})
.ToList<Answer>();
保存(答案,“答案”);
基本上,将答案保存到历史记录表中,从答案表中删除答案,然后更新答案并将其插入答案表。
任何简单的方法使hibernate保存相同的类与多个相同的表?
答案 0 :(得分:1)
据我所知,类和表之间的映射是静态的,无法更改。
您可以创建一个AnswerHistory
类并将其映射到AnswerHist
表:
public class AnswerHistory : Answer {
public AnswerHistory (Answer answer) {
this.QuestionID = answer.QuestionID;
this.Value = answer.Value;
// ...
}
}
然后你会像这样使用它:
save(Answers.Select(answer => new AnswerHistory(answer)));
delete(Answers);
Answers = new stuff;
save(Answers);
另一种选择是在答案中添加一个布尔值,无论它是否在历史中;那么你只需要设置那个布尔值并保存(到同一个表)。