Гость
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate и Составной ключ / 18 сообщений из 18, страница 1 из 1
12.11.2017, 19:57
    #39551792
kunaksergey
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate и Составной ключ
Использую JPA(Hibernate). Есть три таблицы и составной ключ:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
@Entity
@Table(name = "basket")
public class Basket implements Serializable {

    @Id
    private Integer id;
}

@Entity
@Table(name = "price")
public class Price implements Serializable{
    @Id
    private Integer id;
}

@Entity
@Table(name = "basket_item")
public class BasketItem implements Serializable {

    @EmbeddedId
    private BasketItemPK basketItemPk;
}

@Embeddable
public class BasketItemPK implements Serializable {
    @Column(name="basket_id", nullable = false)
    private Integer basketId;
    @Column(name="price_id", nullable = false)
    private Integer priceId;
}



Для создания и сохранения экземпляра BasketItem я делаю:

Код: java
1.
2.
3.
4.
5.
      1.  BasketItem basketItem = new BasketItem();
      2.  basketItem.setBasket(basket);
      3.  basketItem.setPrice(price);
      4.  basketItem.setBasketItemPK(new basketItemPK(price.getId,basket.getId()));
      5.  basketItemService.save(basketItem);


Хотелось бы избежать пункта 4, т.е. что бы Hibernate при сохранении сам формировал ключ. Заранее спс.
...
Рейтинг: 0 / 0
12.11.2017, 20:11
    #39551795
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate и Составной ключ
kunaksergey,
Покажите сами таблицы в базе.
У вас не видно отношений между сущностями. Обычно они есть.
Термин _item обычно не применяется для сущности. Это программистский термин. А сущность термин аналитика.
...
Рейтинг: 0 / 0
12.11.2017, 20:17
    #39551799
kunaksergey
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate и Составной ключ
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
CREATE TABLE basket_item (
  BASKET_ID  INT NOT NULL,
  PRICE_ID INT NOT NULL,
  COUNT      INT          DEFAULT 0,
  PRIMARY KEY (BASKET_ID,PRICE_ID),
  CONSTRAINT FK_BASKET_ITEM_BASKET_1 FOREIGN KEY (BASKET_ID)
  REFERENCES basket(ID),
  CONSTRAINT FK_BASKET_ITEM_PRODUCT_1 FOREIGN KEY (PRICE_ID)
  REFERENCES price(ID)
)




Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
@Entity
@Table(name = "basket_item")
public class BasketItem implements Serializable {
    @EmbeddedId
    private BasketItemPK basketItemPk=new BasketItemPK();

    @JoinColumn(name = "basket_id", referencedColumnName = "id", insertable = false, updatable=false)
    @ManyToOne(optional = false, fetch = FetchType.EAGER)
    private Basket basket;

    @JoinColumn(name = "price_id", referencedColumnName = "id", insertable = false, updatable=false)
    @ManyToOne(optional = false, fetch = FetchType.EAGER)
    private Price price;
public BasketItem() {
    }
//geters and seters
}
...
Рейтинг: 0 / 0
12.11.2017, 20:25
    #39551800
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate и Составной ключ
kunaksergey
Код: plsql
1.
CREATE TABLE basket_item (


теперь видно, что у вас Один ко Многим из 3-х таблиц.
Т.к. basket_item не сущность, а просто техническая табла для связи, то в коде вообще не надо создавать класс basket_item.
Поищите тут пример "Много ко Многим"
basket --- price
...
Рейтинг: 0 / 0
12.11.2017, 20:25
    #39551802
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate и Составной ключ
Petro123Один ко МногимМного ко многим
...
Рейтинг: 0 / 0
12.11.2017, 20:33
    #39551806
kunaksergey
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate и Составной ключ
Petro123,
В таблице basket_item у меня есть поля.. такие как count.. просто не показал... так что это как раз сущность.
...
Рейтинг: 0 / 0
12.11.2017, 20:36
    #39551807
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate и Составной ключ
kunaksergeyPetro123,
В таблице basket_item у меня есть поля.. такие как count.. просто не показал... так что это как раз сущность.
Ну и обозвали бы её BasketPrice если это сущность и она будет проходить вплоть до клиента в бизнес логике.
Это же ничего не меняет.
Пример такой был. И создавать такой класс не надо. Это хибер делает.
...
Рейтинг: 0 / 0
12.11.2017, 20:50
    #39551813
kunaksergey
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate и Составной ключ
Petro123,
бррр.... я что-то не понял. У меня грубо говоря 2 справочника и третья таблица, которая использует их + дополнительные данные такие как count(пришедшие от клиента), названия таблицы отложим...
...
Рейтинг: 0 / 0
12.11.2017, 21:11
    #39551818
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate и Составной ключ
kunaksergey,
это код на хибер-API
Думаю на JPA он не сильно другой по логике. IMHO
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Basket basket = new Basket();
basket.setName(ssssss);
Price p = new Price();
p.setName(dddddddd);
session.save(p);
BasketPrice basket_p = new BasketPrice();
basket_p.setBasket(basket);
basket_p.setPrice(p);
basket.getBasketPrices().add(basket_p);
session.save(basket);
...
Рейтинг: 0 / 0
12.11.2017, 21:16
    #39551820
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate и Составной ключ
kunaksergeyPetro123,
бррр.... я что-то не понял. У меня грубо говоря 2 справочника и третья таблица, которая использует их + дополнительные данные такие как count(пришедшие от клиента), названия таблицы отложим...
все твои слова означают Много ко Много.
Но ты упорно это не произнёс.
Ищи пример на ветке или веб Много ко Много.
...
Рейтинг: 0 / 0
12.11.2017, 21:54
    #39551837
kunaksergey
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate и Составной ключ
вопрос не отношений... у меня все работало, просто был отдельный ID в таблице basket_item и UNIQUE (basket_id,price_id), но в качестве первичного ключа я захотел использовать составной из FOREIGN KEY'S. Примеров в инете много похожих, но нет момента добавления записей.. вот и возник у меня вопрос, сможет ли hibernate сформировать мне ключ или я сам его должен создавать.
...
Рейтинг: 0 / 0
12.11.2017, 22:02
    #39551841
kunaksergey
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate и Составной ключ
Нашел пример:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
   RegistrationId regId = new RegistrationId();
   regId.setStudentId(1);
   regId.setDepartment("ECE");

   StudentEntity student = new StudentEntity(); 
   student.setRegid(regId);
        
   session.save(student);


Прийдется в ручную таки делать.
...
Рейтинг: 0 / 0
12.11.2017, 22:17
    #39551851
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate и Составной ключ
kunaksergey,
я вам дал пример с составным без PK
...
Рейтинг: 0 / 0
12.11.2017, 23:14
    #39551867
kunaksergey
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate и Составной ключ
Petro123,
решил с помощью @MapsId.
...
Рейтинг: 0 / 0
12.11.2017, 23:36
    #39551876
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate и Составной ключ
kunaksergeyPetro123,
решил с помощью @MapsId.
Вот вы и отдаляетесь от хибера (вероятно со спрингом?).
Всё дальше и дальше.
Удачи!
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
28.11.2020, 19:34
    #40023037
Yustas13
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate и Составной ключ
kunaksergey
Petro123,
решил с помощью @MapsId.


не покажете, как решили с помощью @MapsId ?
...
Рейтинг: 0 / 0
30.11.2020, 09:33
    #40023252
faustgreen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate и Составной ключ
...
Рейтинг: 0 / 0
30.11.2020, 10:32
    #40023268
faustgreen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate и Составной ключ
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate и Составной ключ / 18 сообщений из 18, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]