Как правильно сопоставить 2 столбца с одним и тем же объектом? - PullRequest
0 голосов
/ 10 января 2020

Простите, если я делаю что-то не так, программируя или проектируя, я только начал учиться создавать весенние загрузочные API REST.

Для моего дизайна данных у меня есть объект User.

public class User {
   private @Id @GeneratedValue(strategy=GenerationType.AUTO) Long id;
   private String username;
   private String firstname;
   private String lastname;

   @OneToMany(mappedBy = "created_by")
   private Set<Ticket> tickets_created = new HashSet<>();

   @OneToMany(mappedBy = "modified_by")
   private Set<Ticket> tickets_modified = new HashSet<>();

   //...getters setters
}

А затем для других моих таблиц, скажем, я хочу сохранить, кто создал данные, а кто последний изменил данные. Итак, допустим, у меня есть таблица с именем «Ticket».

public class Ticket {
    private @Id @GeneratedValue(strategy=GenerationType.AUTO) Long id;
    private String subject;
    private String message;
    //.... other columns

    @ManyToOne
    @JoinColumn(name = "user_id")
    private User created_by;

    @ManyToOne
    @JoinColumn(name = "user_id")
    private User modified_by;

    //... getters setters
}

Так что это приведет к ошибке «1009 *», поскольку я сопоставил 2 столбца с пользователем. Я много занимался поиском, но не смог найти тот, где это было их дело, все, о чем я читал, было решено путем удаления одного столбца, так как он на самом деле не был нужен, или создания нового объекта, который отображает другие 2 сущности вместе, я не хочу этого делать, это будет означать, что для каждой моей таблицы, которая будет иметь "create_by" и "ified_by ", мне нужно будет создать другую таблицу, чтобы сопоставить ее с пользовательской таблицей.

1 Ответ

2 голосов
/ 10 января 2020

ознакомились ли вы с возможностями аудита, которые есть у Spring: baeldung.com/database-auditing-jpa

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