I'd like to generate two types of Id before saving data according to the real type of the ID (String UUID or Random Long)
@Data
@MappedSuperclass
public abstract class CommonEntity<ID> implements Serializable {
@Id protected ID id;
}
@Data
@Entity
public class Software extends CommonEntity<String> implements Serializable {
@Column(unique = true)
private String name;
}
@Repository
public interface SoftwareRepository extends JpaRepository<Software, String> {
}
In my service implementation, I've tried something like:
Class<?> aClass = entity.getClass();
try {
Field fieldId = aClass.getSuperclass().getDeclaredField("id");
fieldId.setAccessible(true);
Type typeId = fieldId.getType();
log.info("----------Id type ----------{}", typeId);
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
and
Class<?> aClass = entity.getClass();
try {
Field fieldId = aClass.getSuperclass().getDeclaredField("id");
fieldId.setAccessible(true);
String idTypes = fieldId.getType().getSimpleName();
log.info("----------------------------------------------{}", idTypes);
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
My expected value is String or Long. What I get is always an Object
Thanks