当前位置: 首页 > 面试题库 >

从JPA 2.1开始,如何命名ManyToOne引用的外键约束?

田丰
2023-03-14
问题内容

@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;

没有不推荐使用的注释该如何实现?


问题答案:

如文档所示,此注释不能应用于任何对象:

@Target(值= {})

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

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


 类似资料:
  • 我正在做一个基本的例子来测试级联删除操作,但我得到了异常。这是我的实体

  • hibernate如何生成外键约束名称? 如果我不定义一个名字,Hibernate会生成这样的东西 这个名字是如何产生的?可能是从字段名散列或类似的内容?我需要知道名称是否在所有实例上都相等。

  • 问题内容: hibernate如何生成外键约束名称? 如果我没有定义名称,hibernate将生成类似这样的内容 这个名字是怎么产生的?也许来自字段名称的哈希值或类似的东西?我需要知道所有实例上的名称是否相等。 问题答案: Hibernate通过串联表和属性名称来生成约束名称,并将结果转换为。由于某些数据库中的约束名称长度限制,因此需要它。例如,在Oracle数据库中,外键名称的长度不能超过30个

  • 问题内容: Redis中密钥的正常命名约定是什么?我已经看到值之间有分隔符,但是我不确定正常的约定是什么,为什么? 对于用户,您会做类似… 如果用户的ID是 您是否可以仅查询密钥的开头以返回所有用户? 我主要是希望通过研究对人们有用的方式以及他们为什么选择它们的方式来避免将来出现任何问题。 问题答案: Redis中密钥的正常命名约定是什么?我已经看到了以:分隔的值,但是我不确定正常的约定是什么,或

  • 本文向大家介绍MySQL外键约束的禁用与启用命令,包括了MySQL外键约束的禁用与启用命令的使用技巧和注意事项,需要的朋友参考一下 MySQL外键约束的禁用与启用: MySQL外键约束是否启用是通过一个全局变量标示的: FOREIGN_KEY_CHECKS=0; 禁用状态 FOREIGN_KEY_CHECKS=1; 启用状态 查看当前FOREIGN_KEY_CHECKS的值可用如下命令: SELE

  • 问题内容: 假设我有以下表格 所有这些都按预期工作,但是我想添加一个额外的约束,即matrix_param仅可以引用类型为’matrix’的pluginid。所以 应该成功但是 应该失败。 对matrix_params的简单约束不起作用,因为它无法知道插件表中的对应类型是什么。 问题答案: 您可以为此使用CHECK约束。您不能将查询置于CHECK约束中,但可以调用一个函数。因此,我们构建了一个简单