Nowy webservice do zwracania histori zmian obiektu, springboot i mongo

0

Witam,

otóż mam w zadaniu do stworzenia nowy webservice, który będzie zwracał mi historię zmian danego obiektu. Kolejną rzeczą jest zapisywanie usuniętych obiektów do bazy danych, natomiast wyświetlać będę mógł ten obiekt tylko dzięki funkcji utworzonej właśnie w tym webservicie, getById oraz getAll maja tego obiektu nie pokazywać.. No i tutaj pojawia się problem, bo nie zbyt wiem co znaczy, że mam utworzyć nowy webservice i jak dostać się do historii zmian danego obiektu?
Dodam, że utworzyłem @Versiony na każdej zmiennej mojej klasy, ale nie wiem jak pokazać je wszystkie..

Z góry dziękuję za jakieś podpowiedzi, linki

0
sacul napisał(a):

Dodam, że utworzyłem @Versiony na każdej zmiennej mojej klasy, ale nie wiem jak pokazać je wszystkie..

Jako pierwszą podpowiedź polecam poczytać co robi adnotacja, a nie klepać na ślepo Annotation Driven Development: https://stackoverflow.com/questions/13374604/when-to-use-version-and-audited-in-hibernate

0

Rozumiem, czyli w tym wypadku zamiast tych tej adnotacji jednak lepiej użyć Envers API?

0

Wróciłem jednak do MYSQL, moja klasa wygląda tak:

@Entity
@Table
@EntityListeners(AuditingEntityListener.class)
@JsonIgnoreProperties(value = {"createdAt", "updatedAt"}, allowGetters = true)
@Audited
public class Note implements Serializable
{
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Getter
    @Setter
    private Long id;

    @NotBlank
    @Getter
    @Setter
    private String title;

    @Version
    @Getter
    @Setter
    private long version;

    @NotBlank
    @Getter
    @Setter
    private String content;

    @Column(nullable = false, updatable = false)
    @Temporal(TemporalType.TIMESTAMP)
    @CreatedDate
    @Getter
    @Setter
    private Date createdAt;

    @Column(nullable = false)
    @Temporal(TemporalType.TIMESTAMP)
    @LastModifiedDate
    @Getter
    @Setter
    private Date updatedAt;
}

Do tego stworzyłem funkcję w moim controllerze:

@GetMapping("/notes/{id}/versions")
    public void getAllVersions(@PathVariable(value = "id") Long noteId)
    {
        AuditReader auditReader = AuditReaderFactory.get(entityManager);

        List revisionNumbers = auditReader.getRevisions(Note.class, noteId);
        for(int i = 1; i < revisionNumbers.size(); i++) {
            Note auditedNote = auditReader.find(Note.class, noteId, i);
        }
    }

Natomiast nie robi to zupełnie nic, nadal nie mam pojęcia jak dostać HTTP call z historią całej notki.

0

Ej ale Ty wiesz że @Getters i @Setters może być na poziomie klasy ? xD
@jarekr000000 zobacz jakie cudo, spodoba Ci sie :P
EDIT:
Ziomeczku, Java 8 jest od 4 lat może warto zapoznac się z jakimiś normalnymi klasami do obsługi dat xD
Dam podpowiedź: http://www.oracle.com/technetwork/articles/java/jf14-date-time-2125367.html

0

Tak, wiem o tym, aczkolwiek nie zdążyłem tego zmienić.
Dobrze, a odbiegając od dat to możesz przybliżyć jak zabrać się za ten Auditing?

1 użytkowników online, w tym zalogowanych: 0, gości: 1