Я тестирую JPA, в простом случае таблицы File / FileVersions (Master / Details), с отношением OneToMany, у меня есть эта проблема: в таблице FileVersions поле "file_id" (отвечает за отношение с таблицей файлов) принимает все значения, а не только значения из таблицы файлов.
Как я могу использовать отображение JPA для ограничения ввода в FileVersion.file_id
только для значений, существующих в File.id
?
Мой класс File и FileVersion:
ФАЙЛ КЛАСС
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="FILE_ID")
private Long id;
@Column(name="NAME", nullable = false, length = 30)
private String name;
//RELATIONS -------------------------------------------
@OneToMany(mappedBy="file", fetch=FetchType.EAGER)
private Collection <FileVersion> fileVersionsList;
//-----------------------------------------------------
КЛАСС ПОЛОВИНЫ
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="VERSION_ID")
private Long id;
@Column(name="FILENAME", nullable = false, length = 255)
private String fileName;
@Column(name="NOTES", nullable = false, length = 200)
private String notes;
//RELATIONS -------------------------------------------
@ManyToOne(fetch=FetchType.EAGER)
@JoinColumn(name="FILE_ID", referencedColumnName="FILE_ID", nullable=false)
private File file;
//-----------------------------------------------------
и это ТАБЛИЦА ФИЛЕВЕРСИИ
CREATE TABLE `JPA-Support`.`FILEVERSION` (
`VERSION_ID` bigint(20) NOT NULL AUTO_INCREMENT,
`FILENAME` varchar(255) NOT NULL,
`NOTES` varchar(200) NOT NULL,
`FILE_ID` bigint(20) NOT NULL,
PRIMARY KEY (`VERSION_ID`),
KEY `FK_FILEVERSION_FILE_ID` (`FILE_ID`)
) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=latin1