powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate и Составной ключ
18 сообщений из 18, страница 1 из 1
Hibernate и Составной ключ
    #39551792
kunaksergey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Использую 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
Hibernate и Составной ключ
    #39551795
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kunaksergey,
Покажите сами таблицы в базе.
У вас не видно отношений между сущностями. Обычно они есть.
Термин _item обычно не применяется для сущности. Это программистский термин. А сущность термин аналитика.
...
Рейтинг: 0 / 0
Hibernate и Составной ключ
    #39551799
kunaksergey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: 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
Hibernate и Составной ключ
    #39551800
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kunaksergey
Код: plsql
1.
CREATE TABLE basket_item (


теперь видно, что у вас Один ко Многим из 3-х таблиц.
Т.к. basket_item не сущность, а просто техническая табла для связи, то в коде вообще не надо создавать класс basket_item.
Поищите тут пример "Много ко Многим"
basket --- price
...
Рейтинг: 0 / 0
Hibernate и Составной ключ
    #39551802
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Один ко МногимМного ко многим
...
Рейтинг: 0 / 0
Hibernate и Составной ключ
    #39551806
kunaksergey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,
В таблице basket_item у меня есть поля.. такие как count.. просто не показал... так что это как раз сущность.
...
Рейтинг: 0 / 0
Hibernate и Составной ключ
    #39551807
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kunaksergeyPetro123,
В таблице basket_item у меня есть поля.. такие как count.. просто не показал... так что это как раз сущность.
Ну и обозвали бы её BasketPrice если это сущность и она будет проходить вплоть до клиента в бизнес логике.
Это же ничего не меняет.
Пример такой был. И создавать такой класс не надо. Это хибер делает.
...
Рейтинг: 0 / 0
Hibernate и Составной ключ
    #39551813
kunaksergey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,
бррр.... я что-то не понял. У меня грубо говоря 2 справочника и третья таблица, которая использует их + дополнительные данные такие как count(пришедшие от клиента), названия таблицы отложим...
...
Рейтинг: 0 / 0
Hibernate и Составной ключ
    #39551818
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Hibernate и Составной ключ
    #39551820
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kunaksergeyPetro123,
бррр.... я что-то не понял. У меня грубо говоря 2 справочника и третья таблица, которая использует их + дополнительные данные такие как count(пришедшие от клиента), названия таблицы отложим...
все твои слова означают Много ко Много.
Но ты упорно это не произнёс.
Ищи пример на ветке или веб Много ко Много.
...
Рейтинг: 0 / 0
Hibernate и Составной ключ
    #39551837
kunaksergey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вопрос не отношений... у меня все работало, просто был отдельный ID в таблице basket_item и UNIQUE (basket_id,price_id), но в качестве первичного ключа я захотел использовать составной из FOREIGN KEY'S. Примеров в инете много похожих, но нет момента добавления записей.. вот и возник у меня вопрос, сможет ли hibernate сформировать мне ключ или я сам его должен создавать.
...
Рейтинг: 0 / 0
Hibernate и Составной ключ
    #39551841
kunaksergey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нашел пример:
Код: 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
Hibernate и Составной ключ
    #39551851
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kunaksergey,
я вам дал пример с составным без PK
...
Рейтинг: 0 / 0
Hibernate и Составной ключ
    #39551867
kunaksergey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,
решил с помощью @MapsId.
...
Рейтинг: 0 / 0
Hibernate и Составной ключ
    #39551876
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kunaksergeyPetro123,
решил с помощью @MapsId.
Вот вы и отдаляетесь от хибера (вероятно со спрингом?).
Всё дальше и дальше.
Удачи!
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Hibernate и Составной ключ
    #40023037
Yustas13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kunaksergey
Petro123,
решил с помощью @MapsId.


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


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