diff --git a/src/org/redkale/source/DataDefaultSource.java b/src/org/redkale/source/DataDefaultSource.java index 11e25aedf..4e6a20c2a 100644 --- a/src/org/redkale/source/DataDefaultSource.java +++ b/src/org/redkale/source/DataDefaultSource.java @@ -471,7 +471,7 @@ public final class DataDefaultSource implements DataSource, Function attr : attrs) { Object a = attr.get(value); ps[i] = FilterNode.formatToString(a); diff --git a/src/org/redkale/source/EntityInfo.java b/src/org/redkale/source/EntityInfo.java index c9b9d4986..973f1c461 100644 --- a/src/org/redkale/source/EntityInfo.java +++ b/src/org/redkale/source/EntityInfo.java @@ -93,6 +93,8 @@ public final class EntityInfo { final boolean autoGenerated; + final boolean autoUUID; + final boolean distributed; boolean initedPrimaryValue = false; @@ -173,6 +175,7 @@ public final class EntityInfo { List updatecols = new ArrayList<>(); List> updateattrs = new ArrayList<>(); boolean auto = false; + boolean uuid = false; boolean sqldistribute = false; int allocationSize0 = 0; @@ -213,6 +216,11 @@ public final class EntityInfo { allocationSize0 = dg.allocationSize(); primaryValue.set(dg.initialValue()); } + if (gv != null && field.getType() == String.class) { //UUID + uuid = true; + auto = false; + } + if (!auto) { insertcols.add(sqlfield); insertattrs.add(attr); @@ -264,6 +272,7 @@ public final class EntityInfo { this.querySQL = null; } this.autoGenerated = auto; + this.autoUUID = uuid; this.distributed = sqldistribute; this.allocationSize = allocationSize0; //----------------cache-------------- @@ -282,6 +291,10 @@ public final class EntityInfo { } public void createPrimaryValue(T src) { + if (autoUUID) { + getPrimary().set(src, Utility.uuid()); + return; + } long v = allocationSize > 1 ? (primaryValue.incrementAndGet() * allocationSize + nodeid) : primaryValue.incrementAndGet(); if (primary.type() == int.class || primary.type() == Integer.class) { getPrimary().set(src, (Integer) ((Long) v).intValue());