Форум программистов, компьютерный форум CyberForum.ru

Java и базы данных

Войти
Регистрация
Восстановить пароль
 
some_name
Вежливость-главное оружие
221 / 221 / 55
Регистрация: 19.02.2013
Сообщений: 1,431
#1

PostgreSQL Hibernate как обновить foreign key на nested entity когда у меня 1-1 или *-1 - Java БД

23.11.2016, 22:54. Просмотров 243. Ответов 0
Метки нет (Все метки)

Здравствуйте!

Имеется следующий маппинг:
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
31
32
33
34
35
36
37
38
@Entity
@Table(name = "A")
public class A {
    @Id
    @Column(name = "id", insertable = false, nullable = false, updatable = false)
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    
    @OneToOne(fetch = FetchType.LAZY, cascade = ALL)
    @JoinColumn(name = "banner_type_id")
    private B b;
 
    @OneToOne(fetch = FetchType.LAZY, cascade = ALL)
    @JoinColumn(name = "country_id")
    private C c;
}
 
@Entity
@Table(name = "B")
public class B {
    @Id
    @Column(name = "id", insertable = false, nullable = false, updatable = false)
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    
    //other fields
}
 
@Entity
@Table(name = "C")
public class C {
    @Id
    @Column(name = "id", insertable = false, nullable = false, updatable = false)
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    
    //other fields
}
Для работы с entity использую spring repository. Пытаюсь обновить B и C поля для А сущности вот так:
Java
1
2
3
4
5
        A a = Arepo.findOne(1L);
        //assume that a.b = B(id=1L), a.c = C(id=1L)
        a.b = B(id=2L)
        a.c = C(id=2L)
        Arepo.save(a);
Однако ничего не получается. После сохранения, если снова достать А(id=1L), то у нее будет B(id=1L), C(id=1L). Пробовал также менять @OneToOne на @ManyToOne - ничего.
Я хочу выполнять обновление используя one-to-one unidirectional mapping.
В чем проблема может быть?

Заранее спс!

Добавлено через 16 минут
Помог только такой вариант:

Java
1
2
3
4
...
a.b = Brepo.findOne(a.b.id)
a.c = Crepo.findOne(a.c.id); 
...
Вроде как я понял, но в тоже время буду не против разъяснений. Hibernate не знает про сущность, которая была создана через new, поэтому, чтобы приаттаичить b and c к сессии я просто достаю их из базы.

А есть ли обходные пути?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.11.2016, 22:54     PostgreSQL Hibernate как обновить foreign key на nested entity когда у меня 1-1 или *-1
Посмотрите здесь:

Hibernate projection for nested entity - Java БД
Добрый день! Возникла такая проблемка. У меня есть две таблицы с кучей полей, связаны один-к-одному. Хочу я вытянуть только первую,...

Когда JPA(hibernate) использует equals/hashcode у entity - Java БД
Что-то я совсем запутался когда они должны вызываться, подскажите пожалуйста. Добавлено через 102 часа 59 минут Наверное я непонятно...

Cannot add or update a child row: a foreign key constraint fails - Java БД
Вот код ошибки: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrity ConstraintViolationException: Cannot add or update a child row: a...

MySQL Hibernate "Unknown entity: fed.guman.User" - Java БД
Добрый вечер. Собственно столкнулся с экзепшеном - "Unknown entity: fed.guman.User" Далее код программы. Только начал разбираться с...

Hibernate. Как это будет в SQL - Java БД
Здравствуйте. У меня есть запросы Hibernate 1.Criteria crit = sess.createCriteria(Cat.class); crit.setMaxResults(50); List cats =...

Как правильно организовывать связку Hibernate и Spring и работать с ней - Java БД
Можете в самых общих чертах описать какие паттерны классы и конфигурационные файлы использовать. Примеров и уроков в интернете очень...

Тестовый проект с hibernate - Java БД
есть такой конфинурационный файл: <?xml version="1.0" encoding="utf-8" ?> <hibernate-configuration ...

Hibernate HQL UPDATE - Java БД
Вобщем работает ли (HQL): UPDATE Table(column1,column2) SELECT column1,column2 FROM Users WHERE KeyColumn=5 Вобщем...

Запрос с Oracle в Hibernate - Java БД
есть такой запрос в БД Оракл: select a, b, c, d from s_table where a='1008' and b='000' and greatest(c, d) between...

Подскажите литературу по Hibernate - Java БД
Хочу выучить hibernate книг нормальных не нашол

Hibernate, составной ключ - Java БД
Есть две таблицы: бригада и материал. Связь многие ко многим. Однако мне нужно не просто написать обыкновенный @ManyToMany мапинг, а так,...

В чем ошибка Hibernate? - Java БД
Ошибка при запуске


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru