Я абсолютно новый в развитии Hibernate, и у меня есть следующая проблема.Почему в этом отображении Hibernate используется @ManyToOne вместо @OneToOne?
У меня есть 2 классов сущностей, которая отображает 2 таблицы БД:
1) Первый класс сущностей (главная) называется KM_ProjectInfo и отображающие таблицу БД с именем KM_PROJECT.
2) Второй класс сущностей называется KM_ProjectInfoStatus и отобразить таблицу БД с именем KM_PROJECT_INFO_STATUS.
Таким образом, второе представляет собой конкретное поле первого (состояние строки, представленное экземпляром класса KM_ProjectInfo). Infact у меня есть что-то вроде этого:
1) KM_ProjectInfo класс:
@Entity
@Table(name = "KM_PROJECT")
public class KM_ProjectInfo implements Serializable {
@Id
@GeneratedValue
private Long idProjectInfo;
@Column(name = "name")
private String name;
@Column(name = "technology")
private String technology;
@ManyToOne
@JoinColumn(name = "idCountry")
private KMCountry country;
@Column(name = "power")
private long power;
@Column(name = "cod")
private String cod;
@ManyToOne
@JoinColumn(name = "idProjectInfoStatus")
private KM_ProjectInfoStatus status;
// GETTERS & SETTERS
}
2) KM_ProjectInfoStatus:
@Entity
@Table(name = "KM_PROJECT_INFO_STATUS")
public class KM_ProjectInfoStatus implements Serializable {
@Id
@GeneratedValue
private Long idProjectInfoStatus;
@Column(name = "foldertech")
private Long foldertech;
@Column(name = "folderproject")
private Long folderproject;
// GETTERS & SETTERS
}
Итак, как вы можете видеть в предыдущем фрагменте KM_ProjectInfoStatuss - это поле KM_ProjectInfo, потому что я хочу что он содержит первичный ключ этой таблицы в качестве внешнего ключа.
В логике моего приложения, я хочу, что в одном ряду KM_PROJECT таблицы (так в один экземпляр класса объекта KM_ProjectInfo) связан один ряд с KM_PROJECT_INFO_STATUS (один экземпляр KM_ProjectInfoStatus класс сущности), поскольку он представляет конкретный статус для строки KM_PROJECT.
В моем коде у меня есть:
@ManyToOne
@JoinColumn(name = "idProjectInfoStatus")
private KM_ProjectInfoStatus status;
, но я думаю, что это неправильно, потому что в одной строке моей первой таблицы она связана с конкретной одной строкой второй таблицы. Но, возможно, мне не хватает чего-то о том, как работает Hibernate.
Помогите мне понять, чего у меня нет? Что это работает? Почему у меня есть @ManyToOne вместо @OneToOne?
Tnx
mmm, значит, вы имеете в виду, что использование экземпляра KM_ProjectInfo OneToMany может быть связано с тем же экземпляром KM_ProjectInfoStatus? И если я использую OneToOne, одна строка KM_ProjectInfo связана с одним конкретным экземпляром KM_ProjectInfoStatus, и никакой другой экземпляр (строка таблицы) KM_ProjectInfo не может быть связан с этим экземпляром (строкой) KM_ProjectInfoStatus? Это смысл вашего объяснения? – AndreaNobili