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

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

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

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

23.11.2016, 22:54. Просмотров 255. Ответов 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 к сессии я просто достаю их из базы.

А есть ли обходные пути?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.11.2016, 22:54
Здравствуйте! Я подобрал для вас темы с ответами на вопрос PostgreSQL Hibernate как обновить foreign key на nested entity когда у меня 1-1 или *-1 (Java БД):

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

Hibernate + Cannot add or update a child row: a foreign key constraint fails - Java
Есть вот такая схема: Соответственно два класса: @Entity @Table(name = "item_orders") public class ItemOrders implements...

Когда 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...

Hibernate primary key - Java
Есть вот такая схема бд: Вот классы: package classes.hibernate; import java.io.Serializable; import javax.persistence.*; ...

[Hibernate] A Foreign key has the wrong number of column. should be 0 - Java EE
Ошибка: Initial SessionFactory creation failed.org.hibernate.AnnotationException: A Foreign key refering com.artmal.model.Teacher from...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.11.2016, 22:54
Привет! Вот еще темы с ответами:

JPA/Hibernate MappingException: Foreign key must have same number - Java EE
Вот описание ошибки. org.hibernate.MappingException: Foreign key (FK_n9nvapt8aqpregmwepb98hjed:questions )) must have same number of...

Как одной строкой запроса добавить один и тот же сгенерированный UUID в поле Key таблицы1 и в поле Foreign Key таблицы2 ? - MySQL
У меня получается добавить одним запросом один и тот же UUID в две таблицы. Как одной строкой запроса добавить один и тот же...

Как заполнить Foreign Key? - MySQL
Есть две таблицы один ко многим t1(idt1,поле1) t2(idt2,поле1,поле2...fk_idt1),idt1 и idt2:autoincrement как мне заполнить fk_idt1 из...

Как отключить проверку FOREIGN KEY - SQL Server
Добрый день. Как с помощью IGNORE_CONSTRAINTS отключить проверку FOREIGN KEY? SET IDENTITY_INSERT Товары ON insert into Товары (Номер,...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

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