|
@@ -92,7 +92,7 @@ public abstract class Table<T extends Persistable> {
|
|
|
}
|
|
|
// Lecture du nom de l'id dans la base
|
|
|
if(field.isAnnotationPresent(DbField.class)) {
|
|
|
- idField = field.getAnnotation(DbField.class).name();
|
|
|
+ idField = field.getAnnotation(DbField.class).value();
|
|
|
} else {
|
|
|
throw new IllegalStateException("Unable to find DbField annotation on id");
|
|
|
}
|
|
@@ -162,7 +162,7 @@ public abstract class Table<T extends Persistable> {
|
|
|
}
|
|
|
// Lecture du nom de l'id dans la base
|
|
|
if(field.isAnnotationPresent(DbField.class)) {
|
|
|
- idField = field.getAnnotation(DbField.class).name();
|
|
|
+ idField = field.getAnnotation(DbField.class).value();
|
|
|
} else {
|
|
|
throw new IllegalStateException("Unable to find DbField annotation on id");
|
|
|
}
|
|
@@ -183,16 +183,21 @@ public abstract class Table<T extends Persistable> {
|
|
|
continue;
|
|
|
}
|
|
|
// Recup valeur dans le resultat
|
|
|
- Object value = rs.getObject(field.getAnnotation(DbField.class).name());
|
|
|
+ Object value = rs.getObject(field.getAnnotation(DbField.class).value());
|
|
|
// Si lien avec une autre entité
|
|
|
- if(field.isAnnotationPresent(DbLink.class)) {
|
|
|
+ if(value != null && field.isAnnotationPresent(DbLink.class)) {
|
|
|
checkIfPersistable(field);
|
|
|
- String[] split = field.getType().getName().split("\\.");
|
|
|
- String className = split[split.length - 1];
|
|
|
- // Chargement de la class Table qui gère l'entité
|
|
|
- Class<?> clazz = Class.forName(field.getAnnotation(DbLink.class).pckg() + "." + className + "Table");
|
|
|
- Table table = (Table) clazz.getMethod("getInstance").invoke(null);
|
|
|
- value = table.getById((Long) value);
|
|
|
+ Long otherId = (Long) value;
|
|
|
+ if(otherId == 0) {
|
|
|
+ value = null;
|
|
|
+ } else {
|
|
|
+ String[] split = field.getType().getName().split("\\.");
|
|
|
+ String className = split[split.length - 1];
|
|
|
+ // Chargement de la class Table qui gère l'entité
|
|
|
+ Class<?> clazz = Class.forName(field.getAnnotation(DbLink.class).value() + "." + className + "Table");
|
|
|
+ Table table = (Table) clazz.getMethod("getInstance").invoke(null);
|
|
|
+ value = table.getById(otherId);
|
|
|
+ }
|
|
|
}
|
|
|
field.set(obj, value);
|
|
|
}
|
|
@@ -221,16 +226,21 @@ public abstract class Table<T extends Persistable> {
|
|
|
continue;
|
|
|
}
|
|
|
// Recup valeur dans le resultat
|
|
|
- Object val = rs.getObject(field.getAnnotation(DbField.class).name());
|
|
|
+ Object val = rs.getObject(field.getAnnotation(DbField.class).value());
|
|
|
// Si lien avec une autre entité
|
|
|
- if(field.isAnnotationPresent(DbLink.class)) {
|
|
|
+ if(val != null && field.isAnnotationPresent(DbLink.class)) {
|
|
|
checkIfPersistable(field);
|
|
|
- String[] split = field.getType().getName().split("\\.");
|
|
|
- String className = split[split.length - 1];
|
|
|
- // Chargement de la class Table qui gère l'entité
|
|
|
- Class<?> clazz = Class.forName(field.getAnnotation(DbLink.class).pckg() + "." + className + "Table");
|
|
|
- Table table = (Table) clazz.getMethod("getInstance").invoke(null);
|
|
|
- val = table.getById((Long) val);
|
|
|
+ Long otherId = (Long) val;
|
|
|
+ if(otherId == 0) {
|
|
|
+ val = null;
|
|
|
+ } else {
|
|
|
+ String[] split = field.getType().getName().split("\\.");
|
|
|
+ String className = split[split.length - 1];
|
|
|
+ // Chargement de la class Table qui gère l'entité
|
|
|
+ Class<?> clazz = Class.forName(field.getAnnotation(DbLink.class).value() + "." + className + "Table");
|
|
|
+ Table table = (Table) clazz.getMethod("getInstance").invoke(null);
|
|
|
+ val = table.getById(otherId);
|
|
|
+ }
|
|
|
}
|
|
|
field.set(obj, val);
|
|
|
}
|
|
@@ -265,16 +275,21 @@ public abstract class Table<T extends Persistable> {
|
|
|
continue;
|
|
|
}
|
|
|
// Recup valeur dans le resultat
|
|
|
- Object value = rs.getObject(field.getAnnotation(DbField.class).name());
|
|
|
+ Object value = rs.getObject(field.getAnnotation(DbField.class).value());
|
|
|
// Si lien avec une autre entité
|
|
|
- if(field.isAnnotationPresent(DbLink.class)) {
|
|
|
+ if(value != null && field.isAnnotationPresent(DbLink.class)) {
|
|
|
checkIfPersistable(field);
|
|
|
- String[] split = field.getType().getName().split("\\.");
|
|
|
- String className = split[split.length - 1];
|
|
|
- // Chargement de la class Table qui gère l'entité
|
|
|
- Class<?> clazz = Class.forName(field.getAnnotation(DbLink.class).pckg() + "." + className + "Table");
|
|
|
- Table table = (Table) clazz.getMethod("getInstance").invoke(null);
|
|
|
- value = table.getById((Long) value);
|
|
|
+ Long otherId = (Long) value;
|
|
|
+ if(otherId == 0) {
|
|
|
+ value = null;
|
|
|
+ } else {
|
|
|
+ String[] split = field.getType().getName().split("\\.");
|
|
|
+ String className = split[split.length - 1];
|
|
|
+ // Chargement de la class Table qui gère l'entité
|
|
|
+ Class<?> clazz = Class.forName(field.getAnnotation(DbLink.class).value() + "." + className + "Table");
|
|
|
+ Table table = (Table) clazz.getMethod("getInstance").invoke(null);
|
|
|
+ value = table.getById(otherId);
|
|
|
+ }
|
|
|
}
|
|
|
field.set(obj, value);
|
|
|
}
|
|
@@ -306,16 +321,21 @@ public abstract class Table<T extends Persistable> {
|
|
|
continue;
|
|
|
}
|
|
|
// Recup valeur dans le resultat
|
|
|
- Object value = rs.getObject(field.getAnnotation(DbField.class).name());
|
|
|
+ Object value = rs.getObject(field.getAnnotation(DbField.class).value());
|
|
|
// Si lien avec une autre entité
|
|
|
- if(field.isAnnotationPresent(DbLink.class)) {
|
|
|
+ if(value != null && field.isAnnotationPresent(DbLink.class)) {
|
|
|
checkIfPersistable(field);
|
|
|
- String[] split = field.getType().getName().split("\\.");
|
|
|
- String className = split[split.length - 1];
|
|
|
- // Chargement de la class Table qui gère l'entité
|
|
|
- Class<?> clazz = Class.forName(field.getAnnotation(DbLink.class).pckg() + "." + className + "Table");
|
|
|
- Table table = (Table) clazz.getMethod("getInstance").invoke(null);
|
|
|
- value = table.getById((Long) value);
|
|
|
+ Long otherId = (Long) value;
|
|
|
+ if(otherId == 0) {
|
|
|
+ value = null;
|
|
|
+ } else {
|
|
|
+ String[] split = field.getType().getName().split("\\.");
|
|
|
+ String className = split[split.length - 1];
|
|
|
+ // Chargement de la class Table qui gère l'entité
|
|
|
+ Class<?> clazz = Class.forName(field.getAnnotation(DbLink.class).value() + "." + className + "Table");
|
|
|
+ Table table = (Table) clazz.getMethod("getInstance").invoke(null);
|
|
|
+ value = table.getById(otherId);
|
|
|
+ }
|
|
|
}
|
|
|
field.set(obj, value);
|
|
|
}
|
|
@@ -350,7 +370,7 @@ public abstract class Table<T extends Persistable> {
|
|
|
}
|
|
|
// Cherche l'id
|
|
|
if (dbIdName == null && field.isAnnotationPresent(DbId.class)) {
|
|
|
- dbIdName = field.getAnnotation(DbField.class).name();
|
|
|
+ dbIdName = field.getAnnotation(DbField.class).value();
|
|
|
attrIdName = field.getName();
|
|
|
continue;
|
|
|
}
|
|
@@ -359,13 +379,17 @@ public abstract class Table<T extends Persistable> {
|
|
|
sql.append(",");
|
|
|
values.append(",");
|
|
|
}
|
|
|
- sql.append(field.getAnnotation(DbField.class).name());
|
|
|
+ sql.append(field.getAnnotation(DbField.class).value());
|
|
|
values.append("?");
|
|
|
// Si il y a un lien avec une autre entité
|
|
|
if(field.isAnnotationPresent(DbLink.class)) {
|
|
|
checkIfPersistable(field);
|
|
|
- Persistable persistable = (Persistable) field.get(obj);
|
|
|
- params.add(persistable.getId());
|
|
|
+ if(field.get(obj) == null) {
|
|
|
+ params.add(0l);
|
|
|
+ } else {
|
|
|
+ Persistable persistable = (Persistable) field.get(obj);
|
|
|
+ params.add(persistable.getId());
|
|
|
+ }
|
|
|
}
|
|
|
// Sinon ajoute simplement le parametre
|
|
|
else {
|
|
@@ -418,19 +442,23 @@ public abstract class Table<T extends Persistable> {
|
|
|
}
|
|
|
// Si c'est l'id
|
|
|
if (field.isAnnotationPresent(DbId.class)) {
|
|
|
- where.append(field.getAnnotation(DbField.class).name() + " = ?");
|
|
|
+ where.append(field.getAnnotation(DbField.class).value() + " = ?");
|
|
|
continue;
|
|
|
}
|
|
|
// Sinon ajoute dans le set
|
|
|
if (!first) {
|
|
|
sql.append(",");
|
|
|
}
|
|
|
- sql.append(field.getAnnotation(DbField.class).name() + " = ?");
|
|
|
+ sql.append(field.getAnnotation(DbField.class).value() + " = ?");
|
|
|
// Si il y a un lien avec une autre entité
|
|
|
if(field.isAnnotationPresent(DbLink.class)) {
|
|
|
checkIfPersistable(field);
|
|
|
- Persistable persistable = (Persistable) field.get(obj);
|
|
|
- params.add(persistable.getId());
|
|
|
+ if(field.get(obj) == null) {
|
|
|
+ params.add(0l);
|
|
|
+ } else {
|
|
|
+ Persistable persistable = (Persistable) field.get(obj);
|
|
|
+ params.add(persistable.getId());
|
|
|
+ }
|
|
|
}
|
|
|
// Sinon ajoute simplement le parametre
|
|
|
else {
|