diff --git a/pom.xml b/pom.xml
index 4ae40c5..0250175 100644
--- a/pom.xml
+++ b/pom.xml
@@ -2,7 +2,7 @@
4.0.0
kangaroo-and-rabbit
archidata
- 0.3.2
+ 0.3.3
3.1.1
2.3.1
@@ -50,6 +50,10 @@
org.glassfish.jersey.media
jersey-media-multipart
+
+ org.glassfish.jersey.core
+ jersey-client
+
org.glassfish.jersey.inject
jersey-hk2
diff --git a/src/org/kar/archidata/SqlWrapper.java b/src/org/kar/archidata/SqlWrapper.java
index 3d2aa77..00a1c94 100644
--- a/src/org/kar/archidata/SqlWrapper.java
+++ b/src/org/kar/archidata/SqlWrapper.java
@@ -30,6 +30,7 @@ import com.fasterxml.jackson.databind.ObjectMapper;
import org.kar.archidata.annotation.SQLCreateTime;
import org.kar.archidata.annotation.SQLDefault;
+import org.kar.archidata.annotation.SQLDeleted;
public class SqlWrapper {
@@ -706,6 +707,7 @@ public class SqlWrapper {
boolean firstField = true;
int count = 0;
+ boolean hasDeleted = false;
for (Field elem : clazz.getFields()) {
ModelLink linkGeneric = getLinkMode(elem);
if (linkGeneric != ModelLink.NONE) {
@@ -715,6 +717,9 @@ public class SqlWrapper {
if (!full && createTime) {
continue;
}
+ if (!hasDeleted) {
+ hasDeleted = elem.getDeclaredAnnotationsByType(SQLDeleted.class).length != 0;
+ }
String name = elem.getName();
boolean updateTime = elem.getDeclaredAnnotationsByType(SQLUpdateTime.class).length != 0;
if (!full && updateTime) {
@@ -735,7 +740,7 @@ public class SqlWrapper {
query.append(" FROM `");
query.append(tableName);
query.append("` ");
- whereAppendQuery(query, tableName, condition, true);
+ whereAppendQuery(query, tableName, condition, firstField);
if (orderBy != null && orderBy.length() >= 1) {
query.append(" ORDER BY ");
//query.append(tableName);
@@ -751,7 +756,7 @@ public class SqlWrapper {
query.append(".deleted = false ");
*/
firstField = true;
- //System.out.println("generate the query: '" + query.toString() + "'");
+ System.out.println("generate the query: '" + query.toString() + "'");
// prepare the request:
PreparedStatement ps = entry.connection.prepareStatement(query.toString(), Statement.RETURN_GENERATED_KEYS);
whereInjectValue(ps, condition);
diff --git a/src/org/kar/archidata/annotation/SQLDeleted.java b/src/org/kar/archidata/annotation/SQLDeleted.java
new file mode 100644
index 0000000..681700a
--- /dev/null
+++ b/src/org/kar/archidata/annotation/SQLDeleted.java
@@ -0,0 +1,12 @@
+package org.kar.archidata.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Target(ElementType.FIELD)
+@Retention(RetentionPolicy.RUNTIME)
+public @interface SQLDeleted {
+
+}
diff --git a/src/org/kar/archidata/model/GenericTable.java b/src/org/kar/archidata/model/GenericTable.java
index b35627f..5a3a7db 100644
--- a/src/org/kar/archidata/model/GenericTable.java
+++ b/src/org/kar/archidata/model/GenericTable.java
@@ -6,6 +6,7 @@ import org.kar.archidata.annotation.SQLAutoIncrement;
import org.kar.archidata.annotation.SQLComment;
import org.kar.archidata.annotation.SQLCreateTime;
import org.kar.archidata.annotation.SQLDefault;
+import org.kar.archidata.annotation.SQLDeleted;
import org.kar.archidata.annotation.SQLNotNull;
import org.kar.archidata.annotation.SQLNotRead;
import org.kar.archidata.annotation.SQLPrimaryKey;
@@ -20,6 +21,7 @@ public class GenericTable {
@SQLNotRead
@SQLNotNull
@SQLDefault("'0'")
+ @SQLDeleted
@SQLComment("When delete, they are not removed, they are just set in a deleted state")
public Boolean deleted = null;
@SQLNotRead