powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate ManyToOne и ForeignKeyId совместно в одной Entity
14 сообщений из 14, страница 1 из 1
Hibernate ManyToOne и ForeignKeyId совместно в одной Entity
    #39643231
sanringo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как лучше сделать подобное?
Код: 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
Hibernate ManyToOne и ForeignKeyId совместно в одной Entity
    #39643245
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По-моему если одно из двух свойств объявить read-only или что-то вроде updatable=false, insertable=false то должно работать.
То есть читать ORM будет в оба свойства, но записывать в БД только из одного.
...
Рейтинг: 0 / 0
Hibernate ManyToOne и ForeignKeyId совместно в одной Entity
    #39643266
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sanringo,
Дай код и ошибку.
Обновлять классом то лучше чем писать класс.id в поле fk
...
Рейтинг: 0 / 0
Hibernate ManyToOne и ForeignKeyId совместно в одной Entity
    #39643574
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Либо ты отдаешь управление в руки ORM либо управляешь сам. Оставь какой-то один вариант.
...
Рейтинг: 0 / 0
Hibernate ManyToOne и ForeignKeyId совместно в одной Entity
    #39644478
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не проще объявить поле 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
Hibernate ManyToOne и ForeignKeyId совместно в одной Entity
    #39644486
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А смысл? Можно тогда и через объект получить id
...
Рейтинг: 0 / 0
Hibernate ManyToOne и ForeignKeyId совместно в одной Entity
    #39644530
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HettА смысл? Можно тогда и через объект получить id
можно, но в данном случае синхронизация полей entity при вызове сеттера,
кроме того так удобно.
...
Рейтинг: 0 / 0
Hibernate ManyToOne и ForeignKeyId совместно в одной Entity
    #39644532
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
llemingHettА смысл? Можно тогда и через объект получить id
можно, но в данном случае синхронизация полей entity при вызове сеттера,
кроме того так удобно.

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

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

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

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


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

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

Думаю ТС скорее всего хотел иметь возможность получать идетнтификатор связанной сущности не загружая саму сущность.
...
Рейтинг: 0 / 0
Hibernate ManyToOne и ForeignKeyId совместно в одной Entity
    #39645166
sanringo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дело в том, что присвоение будет происходить через 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
Hibernate ManyToOne и ForeignKeyId совместно в одной Entity
    #39645170
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sanringo,
21403087
...
Рейтинг: 0 / 0
Hibernate ManyToOne и ForeignKeyId совместно в одной Entity
    #39645171
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sanringoReflection ещё нехватало таких тормозов.
...
Рейтинг: 0 / 0
Hibernate ManyToOne и ForeignKeyId совместно в одной Entity
    #39645183
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
14 сообщений из 14, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate ManyToOne и ForeignKeyId совместно в одной Entity
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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