powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / JPA - save dependent entity in one Transaction - элегантно?
14 сообщений из 14, страница 1 из 1
JPA - save dependent entity in one Transaction - элегантно?
    #39634017
_webdev_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, вопрос будет не в том, как сохранить, а в том, как это сделать наиболее элегантно.

Итак, всё просто - имеется две сущности, которые зависят друг от друга, например Account и User. Хочу сохранять всё одним махом.

Сейчас код выглядит приблизительно так.
Можно ли как-то сделать так, чтоб я не указывал в User ссылку на Account?

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
@Entity(name = "account")
public class Account {

    @Id
    @GeneratedValue
    private long id;

    @OneToOne(mappedBy = "account", fetch = FetchType.EAGER, cascade = CascadeType.ALL)
    private User user;
....



Код: java
1.
2.
3.
4.
5.
6.
@Entity(name = "user")
public class User {

    @OneToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "account_id")
    private Account account;



Пока быстрое решение для сохранения такое..

Код: java
1.
2.
3.
4.
5.
            Account account = new Account();
            User newUser = User.builder().userName("admin").email("admin@ca.com").password("admin").account(account).status(Status.ENABLED).lastLogin(LocalDateTime.now()).build();

            account.setUser(newUser);
            accountRepository.save(account);



но когда хочу получить account, то получаю пустой объект
Код: java
1.
Account account = user.getAccount();


Почему?

Спасибо.
...
Рейтинг: 0 / 0
JPA - save dependent entity in one Transaction - элегантно?
    #39634018
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_webdev_,
Один к одному нет смысла.
Все пишется в одну таблицу и все.
...
Рейтинг: 0 / 0
JPA - save dependent entity in one Transaction - элегантно?
    #39634020
_webdev_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123_webdev_,
Один к одному нет смысла.
Все пишется в одну таблицу и все. - имеет, у меня в Аккаунте ещё несколько других сущностей.

Пытаюсь понять, как лучше доставать зависимые сущности со SpringData JPA.
...
Рейтинг: 0 / 0
JPA - save dependent entity in one Transaction - элегантно?
    #39634030
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чот я не въехал, ты делаешь явно узер.сетАккаунт(аккаунт) -- а потом тебе узер.гетАккаунт() дает налл??
...
Рейтинг: 0 / 0
JPA - save dependent entity in one Transaction - элегантно?
    #39634032
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
....а.. "пустой" это значит объект с незаполненными полями? ну так это... ты ж в узера и кладешь "пустой" аккаунт если конечно еще 25000 строк кода ты не спрятал кроме показанного.
...
Рейтинг: 0 / 0
JPA - save dependent entity in one Transaction - элегантно?
    #39634073
_webdev_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andreykaTчот я не въехал, ты делаешь явно узер.сетАккаунт(аккаунт) -- а потом тебе узер.гетАккаунт() дает налл?? - Да, в БД, есть аккаунт с id, а когда его пытаюсь с достать с пользователя, - то null.


andreykaT....а.. "пустой" это значит объект с незаполненными полями? ну так это... ты ж в узера и кладешь "пустой" аккаунт если конечно еще 25000 строк кода ты не спрятал кроме показанного.
Вот, добавил ещё один элемент в аккаунт, он не может быть пустым, в Бд поле есть. Нет, показал только зависимости и как я их в БД сохраняю.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
Account account = new Account();
            Purchase purchase = new Purchase();
            purchase.setAccount(account);
            account.setPurchases(ImmutableList.of(purchase));
            User newUser = User.builder().userName("admin").email("admin@ca.com").password("admin").account(account).status(Status.ENABLED).lastLogin(LocalDateTime.now()).build();

            account.setUser(newUser);
            accountRepository.save(account);
...
Рейтинг: 0 / 0
JPA - save dependent entity in one Transaction - элегантно?
    #39634098
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_webdev_Petro123_webdev_,
Один к одному нет смысла.
Все пишется в одну таблицу и все. - имеет, у меня в Аккаунте ещё несколько других сущностей.

Пытаюсь понять, как лучше доставать зависимые сущности со SpringData JPA.
Не делают сущность номер дома + сущность улица и сущность город.
Понятно?
Т.е. не дробят сущности один к одному.
Если в сущности аккаунт несколько других, это не значит что аккаунт нельзя объединить с user.
Нарисуй UML
...
Рейтинг: 0 / 0
JPA - save dependent entity in one Transaction - элегантно?
    #39637026
base2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_webdev_, у юзера-то в БД заполняется поле account_id при сохранении?
Ты вроде как в мэппинге указываешь, что в отношениях Account<->User главный - User. А сохраняешь account. Попробуй сделать:
Код: java
1.
2.
3.
user.setAccount(account)
userRepository.save(user)
userRepository.findOne(userId).getAccount()
...
Рейтинг: 0 / 0
JPA - save dependent entity in one Transaction - элегантно?
    #39637028
base2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
base2_webdev_, Ты вроде как в мэппинге указываешь, что в отношениях Account<->User главный - User.
а, хотя нет
...
Рейтинг: 0 / 0
JPA - save dependent entity in one Transaction - элегантно?
    #39637032
base2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
base2, хотя не, я все верно сказал изначально. Всегда путаюсь с mappedBy)
...
Рейтинг: 0 / 0
JPA - save dependent entity in one Transaction - элегантно?
    #39638460
_webdev_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
base2_webdev_, у юзера-то в БД заполняется поле account_id при сохранении?
Ты вроде как в мэппинге указываешь, что в отношениях Account<->User главный - User. А сохраняешь account. Попробуй сделать: - да, так будет работать, потому что делается ещё один запрос, который я делать не хочу.
Погуглил, думаю наилучшее решение, будет с помощью "@NamedEntityGrap". Тогда нужные зависимости будут грезиться сразу, при первом же запросе..
...
Рейтинг: 0 / 0
JPA - save dependent entity in one Transaction - элегантно?
    #39638493
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_webdev_да, так будет работать
Работать будет любой Г.. код что пишет программист. Это закон жизни.
Будут работать и таблицы без PK
и не нормализованная база
и текстовые строки как ключи в таблицах
и даты в виде текста в базах.
Всё будет работать.
Но это не значит что это будет технически грамотно.
...
Рейтинг: 0 / 0
JPA - save dependent entity in one Transaction - элегантно?
    #39638505
_webdev_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123Работать будет любой Г.. код что пишет программист. Это закон жизни. - я же не спорил, просто утвердительно ответил.
Для себя ищу оптимальное решение, вытягивания всех нужных мне сущностей одним запросом.
...
Рейтинг: 0 / 0
JPA - save dependent entity in one Transaction - элегантно?
    #39638544
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_webdev_Для себя ищу оптимальное решение, вытягивания всех нужных мне сущностей одним запросом.кончай тупить.
Если сущность будет одна, то и запрос будет один.
А бизнес сущность из двух полей у тебя одна:
Бизнес-сущностьКодИмяМылоПароль
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / JPA - save dependent entity in one Transaction - элегантно?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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