- 如果表使用了自增主鍵弦撩,不要使用tkmybatis做insert操作文虏。會(huì)導(dǎo)致seata無(wú)法拿到新數(shù)據(jù)的id瞒瘸,無(wú)法生成undo_log
- 1.4.2版本坷备。生成undo_log時(shí)熄浓,無(wú)法把datetime類型的數(shù)據(jù)轉(zhuǎn)化為json情臭。
需要自己寫(xiě)一個(gè)json處理器,然后創(chuàng)建文件 src/main/resources/META-INF/seata/io.seata.rm.datasource.undo.parser.spi.JacksonSerializer赌蔑,把json處理器的全名寫(xiě)到文件中俯在。
import com.fasterxml.jackson.databind.JsonDeserializer;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import io.seata.rm.datasource.undo.parser.spi.JacksonSerializer;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class JsonDateTimeSerializer implements JacksonSerializer<LocalDateTime> {
private static final DateTimeFormatter DATETIME_FORMAT = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
@Override
public Class<LocalDateTime> type() {
return LocalDateTime.class;
}
@Override
public JsonSerializer<LocalDateTime> ser() {
return new LocalDateTimeSerializer(DATETIME_FORMAT);
}
@Override
public JsonDeserializer<? extends LocalDateTime> deser() {
return new LocalDateTimeDeserializer(DATETIME_FORMAT);
}
}
- 分布式事務(wù)結(jié)束之前,事務(wù)外的線程不要修改數(shù)據(jù)娃惯。否則跷乐,回滾操作會(huì)失敗≈呵常回滾操作會(huì)用undo_log的after_image校驗(yàn)數(shù)據(jù)愕提。
- 事務(wù)中出現(xiàn)異常不能吞掉,要拋出來(lái)皿哨。否則不會(huì)回滾浅侨。