ID
- 该hint的唯一标识public interface IMergeAwareDirtyHint<ID extends Serializable> extends IDirtyHint, IdentifiableDomainObject<ID>
Example:
public class OrderDirtyHint implements IMergeAwareDirtyHint<Long> {
private static int BITS = 8;
public enum Type {
Type1(0),
Type2(1),
Type3(2);
int bit;
BitSet dirtyMap() {
BitSet s = new BitSet(BITS);
s.set(bit);
return s;
}
}
private final BitSet dirtyMap = new BitSet(BITS);
private final Order order;
private BigDecimal price;
public OrderDirtyHint(Order order, Type type) {
this.order = order;
this.dirtyMap.set(type.bit);
}
public boolean has(Type type) {
return dirtyMap.intersects(type.dirtyMap());
}
public void onMerge(IDirtyHint thatHint) {
OrderDirtyHint that = (OrderDirtyHint) thatHint;
that.dirtyMap.or(dirtyMap);
if (price != null) {
that.price = price;
}
}
public Long getId() {
return order.getId();
}
}
限定符和类型 | 方法和说明 |
---|---|
default void |
onMerge(IDirtyHint thatHint)
Merge预留的hook.
|
getId
default void onMerge(IDirtyHint thatHint)
注意:合并过程中要改变状态,要改变thatHint
入参的状态,而不是改变this
thatHint
- DirtyMemento
里现存的该hintCopyright © 2020–2023. All rights reserved.