Доступ к столбцам по первичному ключу из другой таблицы - PullRequest
0 голосов
/ 30 мая 2019

Я очень новичок в Java и пытаюсь создать простой API с помощью Spring. Я не могу найти четкого описания того, как реализовать интуитивные отношения pk-fk в файлах модели. API - это приложение для ресторана, и предметы из таблицы меню должны использоваться в заказах и корзинах.

Я записал все определения таблиц в файлы моделей, такие как Меню, Цены, Заказы, Корзина покупок, и мне нужно использовать столбцы из таблицы Меню, которые не являются pk (например, имя элемента) в таблице Заказы. Как я понимаю, связь может быть установлена ​​только с помощью pk, но как мне получить доступ к другим столбцам таблицы меню из таблицы Orders через pk?

@Entity
public class Menu {
    @Id
    @GeneratedValue(strategy= GenerationType.IDENTITY)
    private int id;
    private String name;
    private float size;
    private String ingredients;
    private String dishCat;
    private String drinkCat;
    private Boolean drink;
    private String remarks;
    private String offer;

protected Menu() {

}

public Menu(String name, float size, String ingredients, String dishCat, String drinkCat, Boolean drink, String offer, String remarks) {
    this.name = name;
    this.size = size;
    this.ingredients = ingredients;
    this.dishCat = dishCat;
    this.drinkCat = drinkCat;
    this.drink = drink;
    this.offer = offer;
    this.remarks = remarks;
}


@Override
public String toString() {
    if (drink == false) {
        return String.format("%d. %s: %s - %s. Size: %f g. Ingredients: %s. Category: %s.", id, dishCat, name, offer, size, ingredients, remarks);
    }
    else {
        return String.format("%d. %s: %s - %s. Size: %f ml.", id, drinkCat, name, offer, size);
    }
}
    // Getters and setters, accessor methods
}

1 Ответ

0 голосов
/ 30 мая 2019

Когда у вас есть идентификатор меню, вы можете позвонить в DAO, чтобы получить его из БД. В качестве альтернативы, вы можете добавить временное поле в Order, которое вы заполняете автоматически при получении заказа:

@Transcient
 private transcient Menu menu;

В любом случае в вашем меню все столбцы должны быть помечены @ Column.

...