如何在hibernate映射文件中为特定数据库指定SQL列类型
是否可以根据所使用的方言为 hibernate 属性设置多个 SQL 列类型?如果是的话怎么办?
例如,如果我有一个 char[]
类型的列,我想为 Oracle 创建一个 CLOB
类型,并为 Oracle 创建一个 Text
类型SQL 服务器。
Is it possible to set multiple SQL column types for an hibernate property depending on the dialect used ? If yes how ?
For example, if i have a column of type char[]
, I would like to create a CLOB
type for Oracle and a Text
type in SQL Server.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
简短的回答是“不,这是不可能的”。
长的答案是“有点,但你可能不想这样做”:
Hibernate 会在一定程度上自动执行此操作 - 也就是说,当您定义(隐式或显式)属性时对于某些 Hibernate 类型,它会将该类型转换为适当的 RDBMS 特定的 SQL 类型。 Dialect 及其后代负责那个翻译。
您可以通过扩展您正在使用的方言(例如 Oracle 或 SQL Server) 并注册您自己的列类型。不过,您可能最好依赖默认的 Hibernate 类型映射。
The short answer is "no, it's not possible".
The long answer is "kind of, but you probably don't want to do that":
Hibernate would do that automatically to a certain extent - that is, when you define (implicitly or explicitly) a property of certain Hibernate type, it will translate that type to appropriate RDBMS-specific SQL type. Dialect and its descendants are responsible for that translation.
You could influence how that translation occurs - again, to a certain extent - by extending the dialect(s) you're working with (like Oracle or SQL Server) and registering your own column types. You're likely better off relying on default Hibernate type mappings, though.