@SeniorDmitry

Как заполнить поле класса (класс = сущности таблицы)?

Всем привет! Есть две таблицы task и user.

Есть классы которые реализуют сущности.

@Entity
@Table(name = Task.TABLE)
@EntityListeners(AtomicObjectListener.class)
public class Task  {
	
	@Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Getter
    @Setter
    private Integer id;

   
    @Column(name = "title")
    @Getter
    @Setter
    private String title;


    @Column(name = "user_id")
    @Getter
    @Setter
    private Integer userId;

    @Column(name = "user_name")
    @Getter
    @Setter
    private String userName;

}

@Entity
@Table(name = User.TABLE)
@EntityListeners(AtomicObjectListener.class)
public class User  {
	
	@Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Getter
    @Setter
    private Integer id;


    @Column(name = "user_name")
    @Getter
    @Setter
    private String userName;

}


Вопрос в том как заполнить поле userName в классе Task на основании userId ?

можно было сделать так :

@Entity
@Table(name = Task.TABLE)
@EntityListeners(AtomicObjectListener.class)
public class Task  {
	
	@Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Getter
    @Setter
    private Integer id;

   
    @Column(name = "title")
    @Getter
    @Setter
    private String title;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "user_id")
    @Setter
    @Getter
    private User user;

    @Column(name = "user_name")
    @Getter
    @Setter
    private String userName = user.getName();
}


но я не могу сделать замену т.к. на интовое поле (в классе Task) много чего завязано.
  • Вопрос задан
  • 170 просмотров
Пригласить эксперта
Ответы на вопрос 2
Conacry
@Conacry
Здравствуйте.

Зачем вам отдельное поле userName? Используйте связи таблиц (OneToMany, ManyToOne). Так вы получите доступ к сущности User, и далее ко всем его полям.
Ответ написан
azerphoenix
@azerphoenix Куратор тега Java
Java Software Engineer
Здравствуйте!
Предположим, что 1 пользователь (User) может иметь несколько задач (Task). Получается, что отношения между ними @OneToMany @ManyToOne

Этот код в Task лишний
@Column(name = "user_name")
    @Getter
    @Setter
    private String userName;


Простой пример тут - https://devcolibri.com/%D0%BA%D0%B0%D0%BA-%D1%81%D...

OneToMany добавьте в User (List<Task> tasks), ManyToOne добавьте в Task (User user) и все.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы