Если вы пытаетесь воспользоваться полиморфным поведением, вам необходимо убедиться, что методы, видимые для внешних классов (которые требуют полиморфизма), имеют одну и ту же подпись. Это означает, что они должны иметь одинаковое имя, номер и порядок параметров, а также типы параметров.
В вашем случае вам может быть лучше иметь общий метод draw()
и полагаться на подклассы (Rectangle
, Ellipse
), чтобы реализовать метод draw()
как то, о чем вы думали как «drawEllipse» и «drawRectangle».
Если я правильно понимаю, когда вы тянете объект, вы не хотите, чтобы достижения также извлекались из базы данных? Если это так, то вы должны использовать это:
@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, orphanRemoval = true)
@JoinColumn(name = "candidate_id", nullable=false)
private List<Achievement> achievements= new ArrayList<Achievement>();
Ленивый тип извлечения не будет извлекать ваши отношения один ко многим, поэтому в этом случае достижения не будут извлечены из базы данных, если вы извлекаете объект это имеет достижения.
Вам нужно использовать "com.fasterxml.jackson.annotation.JsonIgnoreProperties;"
@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true)
@JoinColumn(name = "candidate_id", nullable=false)
@JsonIgnoreProperties("achievements")
private List<Achievement> achievements= new ArrayList<Achievement>();