Spring. Как связать две таблицы по ID

181
06 октября 2021, 06:30

Пытался связать поле одной таблицы с id другой. Пока не до конца понимаю как это вообще сделать. Можно ли в spring'е реализовать первичный ключ одной таблицы, первичным ключом другой?

Т.к. у меня ни чего не получалось, я уже пытался хоть как-то связать эти таблицы...я в принципе понимаю что так не делается, но как реализовать по другому не соображу.

import javax.persistence.*;
@Entity
@Table
public class StatusModel {
    @Id
    @GeneratedValue(strategy= GenerationType.AUTO)
    @OneToOne(optional = false, mappedBy = "status_id")
    private Long id;
    private Integer lastStatus;
    private Integer cerrentStatus;
    public StatusModel() {
    }
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    public void setLastStatus(Integer lastStatus) {
        this.lastStatus = lastStatus;
    }
    public Integer getCerrentStatus() {
        return cerrentStatus;
    }
    public void setCerrentStatus(Integer cerrentStatus) {
        this.cerrentStatus = cerrentStatus;
    }
}
import javax.persistence.*;
@Entity
@Table
public class UsersModel {
    @Id
    @GeneratedValue(strategy= GenerationType.AUTO)
    @Column(nullable = false, updatable = false)
    private Long id;
    @OneToOne(optional = false, cascade = CascadeType.ALL)
    @JoinColumn(name = "status_id")
    private StatusModel status;
    @Column(nullable = false)
    private String name;
    public UsersModel () {}
    public UsersModel (UsersModel usersModel) {
        this.id = usersModel.getId();
        this.status = usersModel.getStatus();
        this.name = usersModel.getName();       
    }
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    public StatusModel getStatus() {
        return status;
    }
    public void setStatus(StatusModel status) {
        this.status = status;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }   
}

P.S. Спринг изучаю буквально 3 день, сильно помидорами не закидывайте.

Answer 1

http://internetka.in.ua/hibernate-one-to-one/ Надо выбрать один из 3 вариантов, у вас 2й вариант

Аннотация не над тем полем

@OneToOne(optional = false, mappedBy = "status_id")
    private Long id;

Надо добавить поле в класс StatusModel и настроить отношение через него

 private UsersModel usersModel;
READ ALSO
Загрузка проекта на хостинг

Загрузка проекта на хостинг

Я учусь, сделал небольшой проектИспользовал: IntelliJ IDEA 2019 Ultimate, java, jdbc, mysql, сервлеты

298
Как скрыть параметры окна?

Как скрыть параметры окна?

Нужно скрыть параметры окна (кнопки ЗАКРЫТЬ/СВЕРНУТЬ/РАЗВЕРНУТЬ) (JavaFX)

135
Attempt to invoke virtual method com.android.volley.Request

Attempt to invoke virtual method com.android.volley.Request

Я новичок в андроид программирование и столкнулся вот с такой проблемой который сам не смог решитьПолный текст ошибки выглядит так:

314