I tried to follow this Change private static final field using Java reflection
But for some reason i get java.lang.IllegalAccessException: Can not set static final java.lang.Long field DataRepositoryTests.Item.id to java.lang.Integer
for (Field field : Table.getDeclaredFields()){
                    System.out.println(Table.getSimpleName()); //prints "Item"
                    
                    field.setAccessible(true);
                    if (field.getName().equals(GeneratedValueFields.get(i).getName())) { 
                        System.out.println(field.getName()); //prints "id"
                        Field modifiersField = Table.getDeclaredField(GeneratedValueFields.get(i).getName()); 
                        System.out.println(modifiersField.getName()); //prints "id" as expected
                        modifiersField.setAccessible(true);
                        modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL); //error here
                        //data = 9 (Long)
                        field.set(null,data);
                    };
Now if i remove the line modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL);
I get java.lang.IllegalAccessException: Can not set static final java.lang.Long field DataRepositoryTests.Item.id to java.lang.Long
If i change the field to just private final and specify a Object
field.set(TableModel,data);
It works properly
 
    