hotfix: field type cast

This commit is contained in:
RB 2024-07-11 22:26:22 +08:00
parent 1b2eb3b421
commit a6acdd97ac
2 changed files with 19 additions and 2 deletions

View file

@ -79,7 +79,7 @@ public class Application implements ApplicationListener<ApplicationStartedEvent>
/**
* Rebuild Build [MAJOR]{1}[MINOR]{2}[PATCH]{2}[BUILD]{2}
*/
public static final int BUILD = 3070308;
public static final int BUILD = 3070309;
static {
// Driver for DB

View file

@ -47,6 +47,10 @@ import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
import static com.rebuild.core.metadata.impl.EasyFieldConfigProps.DATETIME_CALCFORMULA;
import static com.rebuild.core.metadata.impl.EasyFieldConfigProps.DATETIME_FORMAT;
import static com.rebuild.core.metadata.impl.EasyFieldConfigProps.DATE_CALCFORMULA;
import static com.rebuild.core.metadata.impl.EasyFieldConfigProps.DATE_FORMAT;
import static com.rebuild.core.metadata.impl.EasyFieldConfigProps.NUMBER_CALCFORMULA;
import static com.rebuild.core.metadata.impl.EasyFieldConfigProps.NUMBER_NOTNEGATIVE;
@ -450,6 +454,8 @@ public class Field2Schema extends SetUser {
// 保留部分扩展配置其余移除避免冲突
JSONObject extraAttrs = fieldEasy.getExtraAttrs();
if (!extraAttrs.isEmpty()) {
extraAttrs.remove(DATE_FORMAT);
extraAttrs.remove(DATETIME_FORMAT);
Object notNegative = extraAttrs.remove(NUMBER_NOTNEGATIVE);
Object calcFormula = extraAttrs.remove(NUMBER_CALCFORMULA);
@ -468,6 +474,17 @@ public class Field2Schema extends SetUser {
MetadataHelper.getMetadataFactory().refresh();
field = MetadataHelper.getField(field.getOwnEntity().getName(), field.getName());
// 去除默认值
try {
java.lang.reflect.Field defaultValueOfField = field.getClass().getDeclaredField("defaultValue");
defaultValueOfField.setAccessible(true);
defaultValueOfField.set(field, null);
java.lang.reflect.Field nullableOfField = field.getClass().getDeclaredField("nullable");
nullableOfField.setAccessible(true);
nullableOfField.set(field, true);
} catch (ReflectiveOperationException ignored) {
}
String alterTypeSql = null;
try {
Dialect dialect = Application.getPersistManagerFactory().getDialect();
@ -487,7 +504,7 @@ public class Field2Schema extends SetUser {
fieldMeta.setString("displayType", EasyMetaFactory.getDisplayType(field).name());
Application.getCommonsService().update(fieldMeta, false);
log.error("DDL ERROR : \n" + alterTypeSql, ex);
log.error("DDL ERROR : \n{}", alterTypeSql, ex);
Throwable cause = ThrowableUtils.getRootCause(ex);
String causeMsg = cause.getLocalizedMessage();