Связка двух таблиц в Hibernate

Есть две таблицы

  1. lu(справочники), которые заведены в системе.
  2. company (компании)

записи в company содержат поле rangid

При создании сущности Company как связать company.rangid и lu.id?

Lu

@Entity
@Table(name = "lu")
public class Lu {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;
    @Column
    private int tag;
    @Column
    private String text;
    @Column
    private int code;

    @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true)
    @JoinColumn(name = "rangid")
    private List<Company> companyList = new ArrayList<>();

    public Lu() {}

    public Lu(int tag, String text, int code) {
        this.tag = tag;
        this.text = text;
        this.code = code;
    }

    public List<Company> getCompanyList() {
        return companyList;
    }

    public void setCompanyList(List<Company> companyList) {
        this.companyList = companyList;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public int getTag() {
        return tag;
    }

    public void setTag(int tag) {
        this.tag = tag;
    }

    public String getText() {
        return text;
    }

    public void setText(String text) {
        this.text = text;
    }

    public int getCode() {
        return code;
    }

    public void setCode(int code) {
        this.code = code;
    }

}

Company

@Entity
@Table(name = "company")
public class Company {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;
    @Column
    private int rangid;
    @Column
    private String text;

    public Company() {}

    public Company(int rangid, String text) {
        this.rangid = rangid;
        this.text = text;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public int getRangid() {
        return rangid;
    }

    public void setRangid(int rangid) {
        this.rangid = rangid;
    }

    public String getText() {
        return text;
    }

    public void setText(String text) {
        this.text = text;
    }
}

Правильная ли связка?

Пробовала так:

@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "id")
private Lu lu;

но начал выдавать ошибку в LuDao в методах, где выбирается Lu, например ссылается на метод

public List<Lu> getLuWithTag(int tag) {
    List<Lu> list = (List<Lu>) HibernateSessionFactoryUtil.getSessionFactory().openSession()
            .createQuery("FROM Lu WHERE tag = :tag")
            .setParameter("tag", tag)
            .list();

    return list;
}

и выдает NullPointerException


Ответы (0 шт):