मेरा समाधान लगातार वस्तु में इंटरफेस से बचना था। तो BaseContract
निम्नलिखित बन गए:
public abstract class BaseContract<T extends Code> {
public abstract T getCode();
}
और PersistentContract
ठोस वर्गों के संदर्भ में लागू किया गया था:
public class PersistentContract extends BaseContract<CodeImpl> {
}
ऐसा लगता है कि बेस क्लास में इंटरफेस के खिलाफ कोडिंग और कंक्रीट क्लास के लिए स्प्रिंग डेटा की जरूरत को पूरा करने के बीच सही संतुलन है।