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

使用Hibernate @Index注释在数据库上创建索引

阳狐若
2023-03-14
问题内容

我的项目中有注释驱动的hibernate功能。

现在,我想在列上创建索引。我当前的列定义是

@NotNull
@Column(name = "hash")
private String hash;

我在@Index这里添加注释

@NotNull
@Column(name = "hash")
@Index(name="hashIndex")
private String hash;

然后删除表并重新启动Tomcat服务器。实例化服务器后,创建了表,但是在以下查询中看不到新索引。

SHOW INDEX FROM tableName

预期用新索引构造表。我在MySQL中使用InnoDB。


问题答案:

有趣的是,在Hibernate配置中,我正在使用hibernate.hbm2ddl.auto=update

这修改了一个现有的数据库。我是手动删除该表tableName并重新启动Tomcat,并且该表已构建但未创建索引。

但是,我制作了hibernate.hbm2ddl.auto=create一个在每次webapp实例时都重新创建数据库的程序,它删除了我的所有数据库并重新构建,并且-
是的,我的新索引已创建!



 类似资料:
  • 问题内容: 我使用Hibernate批注具有如下关系,这是我尝试过的: 这样的事情在ManyToOne上效果很好,如下所示: 我想确保外键在PostgreSQL上被索引,并且架构在MySQL上看起来相似,因此@ForeignKey和@Index具有相同的名称(MySQL始终创建与FK具有相同名称的索引)。 我无法在反面创建索引,因为FileSystemLocation不了解这种关系。因此,Join

  • 使用H2, 如果数据库还不存在,则创建它。 但是,在Postgres中,不会创建不存在的数据库,因此会引发类似“DB不存在”的异常。有没有办法配置Postgres以按需创建不存在的数据库? 以下配置文件可用于重现此问题: 使用H2工作正常: 使用Postgres失败

  • 问题内容: 我试图用来向没有定义主键的表中插入数据。 但是事实是该表的两个字段一起在表中是唯一的。我如何使用hibernate注释实现相同的目的? 这是我的代码。 问题答案: 您可以使用和创建复合键,并将其与您的实体进行映射。例如: 然后在Java代码中使用常规方式来持久化实体。 参考:http : //docs.jboss.org/hibernate/annotations/3.5/refere

  • 问题内容: 我正在尝试使用JDBC在oracle数据库上创建Java源对象。 我要创建的源如下: 我已经尝试过使用execute方法,这给了我。 当我尝试在普通对象上使用execute方法时,出现错误:“ 有人知道我在做什么错吗?似乎在Google上也找不到任何内容。 编辑:这是我用来尝试执行脚本的代码(字符串包含您可以在上面看到的脚本,变量是对象。 如果我尝试使用Statement就是这样: 问

  • 我正在尝试代码优先的方法来使用Spring、Boot和Hibernate创建数据库。 但是,我现在还做不到。 这是我的控制器

  • 问题内容: 读完Hibernate之后:hbm2ddl.auto=正在生产中更新吗?出现了一些问题。首先,我使用Hibernate的原因是要与数据库供应商无关(无需编写10个版本的“相同” sql查询,例如tsql vs. sql)。 我的问题是在创建数据库架构(生产环境)时出现的。据我所知,我有两种选择。 hbm2dll =更新 纯sql(ddl)脚本。 在上面的主题中广泛讨论了第一种选择。第二