自JPA 2.1以来如何命名ManyToOne引用的外键约束?

时间:2014-04-11 08:27:40

标签: java hibernate jpa

@org.hibernate.annotations.ForeignKey已弃用,但我找不到JPA 2.1等效内容的示例?

@ManyToOne
@ForeignKey(name = "FK_USER") //@deprecated Prefer the JPA 2.1 introduced {@link javax.persistence.ForeignKey} instead.
private User user;

如果没有弃用的注释,如何实现?

3 个答案:

答案 0 :(得分:49)

the documentation所示,此注释无法应用于任何内容:

  

@Target(值= {})

因此它只能用作另一个注释的一部分(在另请参阅部分中列出):

@JoinColumn(foreignKey = @ForeignKey(name = "FK_USER"))

答案 1 :(得分:5)

你是对的,我误读了文档。它可以定义为@JoinColumn注释的一部分。

看起来应该是这样的:

@JoinColumn(foreignKey = @ForeignKey(name = "FK_USER"))

答案 2 :(得分:0)

您是否直接插入@JoinColumn(foreignKey = @ForeignKey(name = "FK_USER"))以映射到实体示例:

@ManyToOne
@JoinColumn(foreignKey = @ForeignKey(name = "FK_USER"))
private User user;