私は JPA をテストしています。単純なケースの File/FileVersions テーブル (Master/Details) で、OneToMany 関係があります。この問題があります。FileVersions テーブルでは、フィールド「file_id」(File テーブルとの関係を担当) がすべての値を受け入れます。 、ファイル テーブルの値だけではありません。
FileVersion.file_id
JPA マッピングを使用して、に存在する値のみの入力を制限するにはどうすればよい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;
//-----------------------------------------------------
これがFILEVERSION TABLEです
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