Hibernate 中拷贝Object数据的问题
有以下数据表格
Flight Table : FlightID FlightNumber
Timing Table : TimingID FlightID TimingName TimingValue
由以上结构看出来,flightID是flight表格的key,timingID是timing表格的key,flightID是timing表格的foreign key。
有object:FlightA(12,FR123)
FlightB(13,FR456)
TimingA(90,12,LandingTime,12:00)
TimingB(91,13,TakeOffTime,12:01)。
可以看出FlightA和TimingA相连,FlightB和TimingB相连,如果想把TimingB拷贝到FlightA上。
简单的想法是:
FlightA.setTime(FlightB.getTiming(B));
但是这样不能保证TimingB直接set到FlightA的object上。因为此时拷贝的是整个的TimingB的Object,包括了TimingID和FlightID。Hibernate只会对这个entry做一个简单的update操作。
所以正确的做法是:
Timing clone = FlightB.getTiming(B).cloneWithoutID();
FlightA.setTime(clone);
必须要做一个去ID的clone才能保证顺利的在FlightA上拷贝到TimingB。