我正在测试JPA,在一个简单的情况下,具有OneToMany关系的File / FileVersions表(Master / Details),我有这个问题:在FileVersions表中,字段“ file_id”(负责与File表的关系)接受每个值,不仅是File表中的值。

如何使用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;

//-----------------------------------------------------


这是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

最佳答案

感谢帮助,

我知道限制输入的SQL约束,但是可以使用一些注释创建此SQL Costraint,而无需在数据库中手工编写SQL?

我是JPA的新手,我当时在想使用@JoinColumn批注,JPA也可以创建成本消耗...

再次感谢你。

关于java - JPA连接列允许所有值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2757350/

10-11 22:15
查看更多