гибернация: обойти невозможность сопоставления с интерфейсом - PullRequest
0 голосов
/ 01 июня 2019

Я относительно новичок в спящем режиме, и одна из вещей, которые я обнаруживаю, заключается в том, что это иногда заставляет меня использовать иерархию больше, чем мне бы хотелось.

Я знаю, что невозможно сделать что-то вроде

public interface Storable {
    public String getStorageLocation();
}

, а затем иметь

@Entity
public class Widget {

    @Id
    private int id;
    @OneToOne
    private Storable storable;        
}

Хотя это не работает в спящем режиме, я думаю, что это лучшееВыбор OOD во многих случаях.В таких случаях считается дурным тоном иметь обходной путь, такой как

@Entity
public class Widget {

    @Id
    private int id;
    private int storableId;
    // this might also just be a string called type, which could
    // be mapped to an obj at some point
    private Class storableClass;

}

Я ненавижу это, но это ослабило бы меня с точки зрения соблюдения текущей объектной модели.Я полагаю, что это довольно распространенный сценарий, и мне интересно, как другие справились с этим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...