@SuppressWarnings("unchecked") public static <T extends Serializable> void setIdentifier(final Object obj, final T value) { if (obj instanceof BaseDO<?>) { setIdentifier((BaseDO<T>) obj, value); } for (final Field field : obj.getClass().getDeclaredFields()) { if (field.isAnnotationPresent(Id.class) == true && field.isAnnotationPresent(GeneratedValue.class) == true) { final boolean isAccessible = field.isAccessible(); try { field.setAccessible(true); field.set(obj, value); field.setAccessible(isAccessible); } catch (final IllegalArgumentException e) { e.printStackTrace(); } catch (final IllegalAccessException e) { e.printStackTrace(); } } } }