【发布时间】:2020-03-15 15:59:02
【问题描述】:
我是 Micronaut 的新手,我正在尝试将它与现有数据库一起使用。
我有一个具有显式表和列命名的实体,例如
@Entity
@Table(name = "TGE040LABEL", schema = "dbo", catalog = "tp_63_dev")
@IdClass(Tge040LabelEntityPK.class)
public class Tge040LabelEntity
即使我像这样在 application.yml 中配置 physical_naming_strategy(以及变体,我已经尝试了 physical_naming_strategy... 的各种值):
jpa:
default:
entity-scan:
packages:
- 'my.app.domain'
properties:
hibernate:
hbm2ddl:
auto: none
show_sql: true
physical_naming_strategy: "io.micronaut.data.model.naming.NamingStrategies.UpperCase"
dialect: "org.hibernate.dialect.SQLServerDialect"
我仍然收到此错误
Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: Invalid object name 'tp_63_dev.dbo.tge040_label'.
好像我的配置完全被忽略了。
Micronaut 版本是micronautVersion=1.3.3
我错过了什么吗?
更新
之前:
jpa:
default:
entity-scan:
packages:
- 'my.app.domain'
properties:
hibernate:
hbm2ddl:
auto: none
show_sql: true
dialect: "org.hibernate.dialect.SQLServerDialect"
之后:
jpa:
default:
entity-scan:
packages:
- 'my.app.domain'
properties:
hibernate:
hbm2ddl:
auto: none
show_sql: false
dialect: "org.hibernate.dialect.SQLServerDialect"
physical_naming_strategy: 'org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl'
只是说,配置在正确的位置,对show_sql 的更改很荣幸,对physical_naming_strategy 的更改显然被忽略了。
真的有可能改变physical_naming_strategy吗?
更新 2
像这样更改了我的配置:
jpa:
default:
entity-scan:
packages:
- 'my.app.domain'
properties:
hibernate:
id:
new_generator_mappings: false
format_sql: true
globally_quoted_identifiers_skip_column_definitions: true
jdbc:
lob:
non_contextual_creation: true
dialect: org.hibernate.dialect.SQLServerDialect
ddl-auto: none
physical_naming_strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
implicit_naming_strategy: org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyJpaImpl
调试我得到这个:
在我看来,这意味着 micronaut 正在积极地覆盖我的配置,这至少是不直观的。这种行为是否记录在某处?
【问题讨论】: