Исходные типы прекрасны, когда они выражают то, что вы хотите выразить.
Например, функция десериализации может возвращать List
, но она не знает тип элемента списка. Таким образом, List
является подходящим типом возврата.
Саморегуляция здесь:
public class DailyActivity extends ElasticSearchValue<DailyActivity> {
Вы говорите, что DailyActivity
является ElasticSearchValue<DailyActivity>
, который сам по себе является ElasticSearchValue<ElasticSearchValue<DailyActivity>>
, и это продолжается бесконечно ...
Обновление: я бы разбил это на два класса. Создайте DailyActivity
без подкласса ElasticSearchValue
:
public class DailyActivity {
// the same content as your class above
, затем создайте другой класс, например:
public class ElacticDailyActivity extends ElasticSearchValue<DailyActivity> {
Попробуйте @JsonIdentityInfo
аннотацию, указанную в этом примере. Подробнее здесь http://wiki.fasterxml.com/JacksonFeatureObjectIdentity
@JsonIdentityInfo(generator=ObjectIdGenerators.IntSequenceGenerator.class, property="@id")
public class Identifiable
{
public int value;
public Identifiable next;
}
В этом случае вам необходимо аннотировать отношения с @JsonManagedReference и @JsonBackReference следующим образом:
@ManyToOne
@JoinColumn(name = "company_id", referencedColumnName = "id")
@JsonBackReference
private Company company
И
@OneToMany(mappedBy="company")
@JsonManagedReference
private Set<Employee> employee = new HashSet<Employee>();
Я думаю, где-то в вашем коде. Предыдущий из некоторых примеров DailyActivity указывает на себя.