众所周知,hibernate以非常奇怪的方式处理索引。只有从头开始创建数据库模式时才会生成它们。但是如果你尝试更新数据库模式,hibernate会忽略新的索引。Hibernate用新索引更新数据库结构
我的问题是,是否有人找到一个解决方案如何在模式更新期间要求hibernate为新索引生成SQL。我想与Stefan Steinegger不同意。使用Hibernate进行索引管理是一件痛苦的事情。很高兴看到该功能计划用于下一个版本(3.5.x),并且将向后兼容3.3.x和3.2.x。详细信息是here。
你当然可以不同意斯蒂芬,但他绝对是对的。 Hibernate架构更新只给你非常基础的东西。当涉及索引/辅助对象(触发器/存储特效/等...),**改变**列,约束等等,它不会有任何帮助。有适当的工具,Hibernate架构更新不是其中之一。 Сокироюцвяхинезабивають:-) – ChssPly76 2009-10-30 16:36:02
Thanx ChssPly76。我很欣赏你的观点。但我主要使用SchemaUpdate作为比较现有模式与休眠模式的差异工具。这就是为什么我需要查看自上次部署以来发生了哪些变化(例如添加了新索引等)。现在SchemaUpdate对我来说很好,除了一种情况 - 索引。我知道并评估了数据库重构工具,包括下面提到的LiquiBase。他们中的大多数不能为我提供我期望的灵活性水平。我期待Liquibase 2.0希望它能满足我的胃口。 – FoxyBOA 2009-10-31 05:11:07