Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate ManyToOne и ForeignKeyId совместно в одной Entity / 14 сообщений из 14, страница 1 из 1
11.05.2018, 13:07
    #39643231
sanringo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate ManyToOne и ForeignKeyId совместно в одной Entity
Как лучше сделать подобное?
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
@Entity
public class MyEntity{
  ...
  
  @Column("customer_id")
  private Long customerId;

  @ManyToOne
  @JoinColumn("customer_id")
  private Customer customer;

}


Ошибка: "repeated column in mapping for entity"
Я хочу, чтобы при обновлении поля customerId, автоматом происходило обновление Customer.
...
Рейтинг: 0 / 0
11.05.2018, 13:30
    #39643245
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate ManyToOne и ForeignKeyId совместно в одной Entity
По-моему если одно из двух свойств объявить read-only или что-то вроде updatable=false, insertable=false то должно работать.
То есть читать ORM будет в оба свойства, но записывать в БД только из одного.
...
Рейтинг: 0 / 0
11.05.2018, 14:09
    #39643266
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate ManyToOne и ForeignKeyId совместно в одной Entity
sanringo,
Дай код и ошибку.
Обновлять классом то лучше чем писать класс.id в поле fk
...
Рейтинг: 0 / 0
12.05.2018, 13:10
    #39643574
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate ManyToOne и ForeignKeyId совместно в одной Entity
Либо ты отдаешь управление в руки ORM либо управляешь сам. Оставь какой-то один вариант.
...
Рейтинг: 0 / 0
14.05.2018, 15:09
    #39644478
lleming
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate ManyToOne и ForeignKeyId совместно в одной Entity
не проще объявить поле customerId transient и сделать чтото вроде
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
Long getCustomerId(){
 return  customer == null ? null : customer.getId();
}

setCustomer(Customer customer){
  this.customer = customer;
 this.customerId = customer == null ? null : customer.getId();
}



ну или наоборот
...
Рейтинг: 0 / 0
14.05.2018, 15:22
    #39644486
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate ManyToOne и ForeignKeyId совместно в одной Entity
А смысл? Можно тогда и через объект получить id
...
Рейтинг: 0 / 0
14.05.2018, 16:45
    #39644530
lleming
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate ManyToOne и ForeignKeyId совместно в одной Entity
HettА смысл? Можно тогда и через объект получить id
можно, но в данном случае синхронизация полей entity при вызове сеттера,
кроме того так удобно.
...
Рейтинг: 0 / 0
14.05.2018, 16:47
    #39644532
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate ManyToOne и ForeignKeyId совместно в одной Entity
llemingHettА смысл? Можно тогда и через объект получить id
можно, но в данном случае синхронизация полей entity при вызове сеттера,
кроме того так удобно.

Какая польза будет от этого поля?
...
Рейтинг: 0 / 0
14.05.2018, 17:18
    #39644551
lleming
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate ManyToOne и ForeignKeyId совместно в одной Entity
Hettllemingпропущено...

можно, но в данном случае синхронизация полей entity при вызове сеттера,
кроме того так удобно.

Какая польза будет от этого поля?

наверно у ТС нужно спросить.
...
Рейтинг: 0 / 0
14.05.2018, 17:58
    #39644583
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate ManyToOne и ForeignKeyId совместно в одной Entity
llemingHettпропущено...


Какая польза будет от этого поля?

наверно у ТС нужно спросить.

Думаю ТС скорее всего хотел иметь возможность получать идетнтификатор связанной сущности не загружая саму сущность.
...
Рейтинг: 0 / 0
15.05.2018, 18:20
    #39645166
sanringo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate ManyToOne и ForeignKeyId совместно в одной Entity
Дело в том, что присвоение будет происходить через Reflection API. Например myEntity.set("customer_id", 1).
Пока остановился на варианте, примерно который предлагал lleming
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
@Transient
private Long customerId;

Long getCustomerId(){
     return  customer == null ? null : customer.getId();
}

setCustomerId(Long id){
    Customer customer = getCustomerById(id);
    setCustomer(customer);
}


может hibernate предоставляет более удобные механизмы?
...
Рейтинг: 0 / 0
15.05.2018, 18:40
    #39645170
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate ManyToOne и ForeignKeyId совместно в одной Entity
sanringo,
21403087
...
Рейтинг: 0 / 0
15.05.2018, 18:42
    #39645171
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate ManyToOne и ForeignKeyId совместно в одной Entity
sanringoReflection ещё нехватало таких тормозов.
...
Рейтинг: 0 / 0
15.05.2018, 19:16
    #39645183
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate ManyToOne и ForeignKeyId совместно в одной Entity
sanringo,
Вот пример демка. Где тут нужны айди сущностей?
Код: java
1.
2.
3.
4.
5.
6.
7.
Child child = new Child();
Date currentDate = new Date();
child.setCreatedAt(currentDate);
child.setParent(attachParent);
 
attachParent.getChilds().add(child);
parentDao.save(attachParent);
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate ManyToOne и ForeignKeyId совместно в одной Entity / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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