Внутренний класс отображения спящего режима, ошибка «Не удалось определить тип для: timeStamps» - PullRequest
0 голосов
/ 29 декабря 2018

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

@Entity
public class Task {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer Id;
    private String Status;
    private Timestamps timestamps;
    // getters setters
}

Затем я создал класс Timestamps

public class Timestamps {
 private Timestamp submitted;
 private Timestamp started;
 private Timestamp completed;
 //getter and setters
}

Как мне сделать это отображение, чтобы при получении информации в формате JSON у меня было что-то вроде этого?

# task
{
    "task": # ASCII string
    "status": # one of "submitted", "started", "completed"
    "timestamps": {
    "submitted": # unix/epoch time
    "started": # unix/epoch time or null if not started
    "completed": # unix/epoch time or null if not completed
    }
}

Ответы [ 2 ]

0 голосов
/ 29 декабря 2018

Вы можете поместить аннотацию @Embeddable на метках времени.Hibernate отобразит поля как столбцы в одной таблице.Вам также может понадобиться @Embedded на поле Timestamps в Task (я не могу вспомнить наверняка, если обе стороны нуждаются в аннотации).

0 голосов
/ 29 декабря 2018

Если вы не хотите сохранять Timestamps в БД и просто использовать его в DTO, это поможет вам:

@Transient аннотация используется для указания того, что поле не должно сохраняться вбазы данных.

@Entity
public class Task {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer Id;
private String Status;
@Transient
private Timestamps timestamps;
// getters setters
}

Если вы хотите сохранить Timestamps как отношение, вы должны сделать что-то вроде этого:

@Entity
public class Timestamps {
 @Id
 @GeneratedValue(strategy = GenerationType.IDENTITY)
 private Integer Id;
 private Timestamp submitted;
 private Timestamp started;
 private Timestamp completed;
 //getter and setters
}

@Entity
public class Task {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer Id;
private String Status;
@ManyToOne
private Timestamps timestamps;
// getters setters
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...