Spring Entity Mapping для одного отдельного столбца (PK), отображаемого как внешний ключ в нескольких объектах, то есть sql таблиц в спящем режиме - PullRequest
0 голосов
/ 25 апреля 2020

Я пытаюсь отобразить один столбец первичного ключа таблицы A, который является внешним ключом во многих других таблицах. Как мне этого добиться.

Например, скажем, у меня есть объект «Пользователь», где «id» - это первичный ключ, а у меня есть 3 других объекта: «Фото», «Сообщение» и «Друг» * 1003. *

Как мне сопоставить PK 'id' объекта 'User' с столбцом внешнего ключа 'user_id' в объекте Photo и отобразить его в 2 столбцах 'to_user', 'from_user' в сообщении и 'user_id', ' Колонка друга_пользователя_идентификатора Друга?

Вот декальзация моей таблицы.

Пользователь

@Entity
@Table(name="user_table")
public class User implements Serializable{


    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    @Column(name="id")
    private int id;

    @Column(name="first_name")
    private String firstName;

    @Column(name="last_name")
    private String lastName;

}

Сообщение

@Entity
@Table(name="message_table")
public class Message implements Serializable{


    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    @Column(name="id")
    private int id;

    @Column(name = "from_user")
    private int fromUser;

    @Column(name = "to_user")
    private int toUser;

    @Column(name = "message_body")
    private String messageBody;
    }

и Друг

@Entity
@Table(name = "friend_table")
public class Friend implements Serializable{

    /**
     * 
     */
    private static final long serialVersionUID = 1L;


    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id")
    private int id;

    @Column(name = "user_id")
    private int userId;

    @Column(name = "friend_user_id")
    private int friendUserId;
    }

Таблица фотографий

@Entity
@Table(name="photo_table")
public class Photo implements Serializable {

    /**
     * 
     */
    private static final long serialVersionUID = 1L;


    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    @Column(name="id")
    private int id;

    @Column(name="image_url")
    private String imageUrl;

    @Column(name="user_id")
    private int userId;
}

Здесь from_user, to_user, user_id и friend_user_id - все внешние ключи. Как я должен отобразить это отображение наилучшим образом. Также, когда я хочу удалить пользователя, я хочу удалить все данные этого пользователя во всех 4 таблицах. Кто-нибудь может предложить лучший способ достичь этого?

...