Skip to content

Commit c02d818

Browse files
committed
fix longs
1 parent 05e88ee commit c02d818

2 files changed

Lines changed: 12 additions & 7 deletions

File tree

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
<groupId>dev.efekos</groupId>
88
<artifactId>SimpleQL</artifactId>
9-
<version>1.1</version>
9+
<version>1.1.1</version>
1010

1111
<properties>
1212
<java_version>17</java_version>

src/main/java/dev/efekos/simple_ql/data/Table.java

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@
3131
import dev.efekos.simple_ql.annotation.Unique;
3232
import dev.efekos.simple_ql.exception.NoGetterException;
3333
import dev.efekos.simple_ql.exception.NoSetterException;
34-
import dev.efekos.simple_ql.exception.TableException;
3534
import dev.efekos.simple_ql.implementor.Implementor;
3635
import dev.efekos.simple_ql.query.Query;
3736
import dev.efekos.simple_ql.query.QueryResult;
@@ -93,11 +92,13 @@ public class Table<T extends TableRow<T>> {
9392
private <C> Class<C> grabClass(Implementor<C, ?> implementor) {
9493
try {
9594
for (java.lang.reflect.Type type : implementor.getClass().getGenericInterfaces())
96-
if (type instanceof ParameterizedType pt && pt.getRawType() == Implementor.class)
97-
return (Class<C>) Class.forName(pt.getActualTypeArguments()[0].getTypeName());
95+
if (type instanceof ParameterizedType pt && pt.getRawType() == Implementor.class) {
96+
java.lang.reflect.Type t = pt.getActualTypeArguments()[0];
97+
return (Class<C>) Class.forName(t instanceof ParameterizedType ptt ? ptt.getRawType().getTypeName() : t.getTypeName());
98+
}
9899
return null;
99100
} catch (Exception e) {
100-
throw new IllegalStateException();
101+
throw new IllegalStateException(e.getMessage(),e);
101102
}
102103
}
103104

@@ -147,6 +148,7 @@ void checkExistent() {
147148
*
148149
* @param row {@link T} instance to clean.
149150
*/
151+
@SuppressWarnings("unchecked")
150152
void clean(T row) {
151153
if (!row.isDirty()) return;
152154

@@ -156,7 +158,10 @@ void clean(T row) {
156158
row.getPrimaryField().setAccessible(true);
157159
Optional<SetterAction<Object>> setter = findSetter(field.getType());
158160
new UpdateActionThread(database.getConnection(), "UPDATE " + name + " SET " + field.getName() + "=? WHERE " + primaryKey.getName() + "= ?;", stmt -> {
159-
if (setter.isPresent()) setter.get().set(stmt, 1, field.get(row));
161+
if (setter.isPresent()) {
162+
if(implementors.containsKey(field.getType())) setter.get().set(stmt, 1, ((Implementor<Object,Object>)implementors.get(field.getType())).write(field.get(row)));
163+
else setter.get().set(stmt, 1, field.get(row));
164+
}
160165
setField(row, row.getPrimaryField(), stmt, 2);
161166
return stmt;
162167
}).start();
@@ -332,7 +337,7 @@ Optional<SetterAction<Object>> findSetter(Class<?> c) {
332337
if (c == byte.class || c == Byte.class)
333338
return Optional.of((stmt, index, value) -> stmt.setByte(index, (byte) value));
334339
if (c == long.class || c == Long.class)
335-
return Optional.of((stmt, index, value) -> stmt.setByte(index, (byte) value));
340+
return Optional.of((stmt, index, value) -> stmt.setLong(index, (long) value));
336341
if (TableRowTypeAdapter.class.isAssignableFrom(c)) return Optional.of((stmt, index, value) -> {
337342
TableRowTypeAdapter adapter = (TableRowTypeAdapter) value;
338343
stmt.setString(index, adapter.adapt());

0 commit comments

Comments
 (0)