Micronaut/JPA/Hibernate小写了我的数据库表的名称,并在启动时抛出一个错误,说找不到该表。表在那里,但它是用大写字母命名的。我如何配置micronaut/jpa/hibernate来考虑我的表名的大小写
我在MySQL8数据库中有一个现有的表< code >小部件,我需要使用jpa/hibernate从micronaut服务访问它。不幸的是,在启动时的模式验证期间抛出了一个错误,它在查找表< code>widget,而不是< code>WIDGET。
我已经在不同的环境中(Spring、postgres)寻找并找到了类似问题的解决方案,但无法让它们在microaut中工作。我试过用反勾号
application.yml:
datasources:
default:
url: 'jdbc:myhtml" target="_blank">sql://localhost:3306/myschema'
username: '${dbUser}'
password: '${dbPass}'
jpa:
default:
properties:
hibernate:
hbm2ddl:
auto: validate
小部件.java:
@Entity(name = "WIDGET")
//@Table(name = "`WIDGET`") // this doesn't work either
public class Widget {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "year")
private Integer year;
@Column(name = "widget_title")
private String title;
// appropriate constructors, getters, & setters omitted for brevity...
}
WidgetRepository.java
@Repository
public interface WidgetRepository extends CrudRepository<Widget, Integer>
{
@Executable
Optional<Widget> find(String title);
}
例外情况:
14:40:33.759 [main] ERROR io.micronaut.runtime.Micronaut - Error starting Micronaut server: Bean definition [org.hibernate.SessionFactory] could not be loaded: Error instantiating bean of type [org.hibernate.SessionFactory]
Message: Schema-validation: missing table [widget]
Path Taken: SessionFactory.hibernateSessionFactory(SessionFactoryBuilder sessionFactoryBuilder)
io.micronaut.context.exceptions.BeanInstantiationException: Bean definition [org.hibernate.SessionFactory] could not be loaded: Error instantiating bean of type [org.hibernate.SessionFactory]
Message: Schema-validation: missing table [widget]
Path Taken: SessionFactory.hibernateSessionFactory(SessionFactoryBuilder sessionFactoryBuilder)
at io.micronaut.context.DefaultBeanContext.initializeContext(DefaultBeanContext.java:1898)
at io.micronaut.context.DefaultApplicationContext.initializeContext(DefaultApplicationContext.java:245)
at io.micronaut.context.DefaultBeanContext.readAllBeanDefinitionClasses(DefaultBeanContext.java:3298)
at io.micronaut.context.DefaultBeanContext.finalizeConfiguration(DefaultBeanContext.java:3650)
at io.micronaut.context.DefaultBeanContext.start(DefaultBeanContext.java:337)
at io.micronaut.context.DefaultApplicationContext.start(DefaultApplicationContext.java:190)
at io.micronaut.runtime.Micronaut.start(Micronaut.java:72)
at io.micronaut.runtime.Micronaut.run(Micronaut.java:320)
at io.micronaut.runtime.Micronaut.run(Micronaut.java:306)
at com.example.Application.main(Application.java:11)
Caused by: io.micronaut.context.exceptions.BeanInstantiationException: Error instantiating bean of type [org.hibernate.SessionFactory]
Message: Schema-validation: missing table [widget]
Path Taken: SessionFactory.hibernateSessionFactory(SessionFactoryBuilder sessionFactoryBuilder)
at io.micronaut.context.DefaultBeanContext.resolveByBeanFactory(DefaultBeanContext.java:2344)
at io.micronaut.context.DefaultBeanContext.doCreateBean(DefaultBeanContext.java:2282)
at io.micronaut.context.DefaultBeanContext.doCreateBean(DefaultBeanContext.java:2228)
at io.micronaut.context.DefaultBeanContext.createRegistration(DefaultBeanContext.java:2988)
at io.micronaut.context.SingletonScope.getOrCreate(SingletonScope.java:80)
at io.micronaut.context.DefaultBeanContext.findOrCreateSingletonBeanRegistration(DefaultBeanContext.java:2890)
at io.micronaut.context.DefaultBeanContext.loadContextScopeBean(DefaultBeanContext.java:2709)
at io.micronaut.context.DefaultBeanContext.initializeContext(DefaultBeanContext.java:1892)
... 9 common frames omitted
Caused by: org.hibernate.tool.schema.spi.SchemaManagementException: Schema-validation: missing table [widget]
at org.hibernate.tool.schema.internal.AbstractSchemaValidator.validateTable(AbstractSchemaValidator.java:129)
at org.hibernate.tool.schema.internal.GroupedSchemaValidatorImpl.validateTables(GroupedSchemaValidatorImpl.java:42)
at org.hibernate.tool.schema.internal.AbstractSchemaValidator.performValidation(AbstractSchemaValidator.java:97)
at org.hibernate.tool.schema.internal.AbstractSchemaValidator.doValidation(AbstractSchemaValidator.java:76)
at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction(SchemaManagementToolCoordinator.java:204)
at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.process(SchemaManagementToolCoordinator.java:85)
at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:335)
at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:471)
at io.micronaut.configuration.hibernate.jpa.EntityManagerFactoryBean.hibernateSessionFactory(EntityManagerFactoryBean.java:222)
at io.micronaut.configuration.hibernate.jpa.$EntityManagerFactoryBean$HibernateSessionFactory3$Definition.build(Unknown Source)
at io.micronaut.context.BeanDefinitionDelegate.build(BeanDefinitionDelegate.java:161)
at io.micronaut.context.DefaultBeanContext.resolveByBeanFactory(DefaultBeanContext.java:2331)
... 16 common frames omitted
一位搜索能力比我强的同事发现了这个。而我不需要@替换DefaultPhysicalNamingStrategy。用我自己的课,我能够通过改变我的应用程序来解决我的问题。yml如下所示,特别添加了physical_naming_strategy:'org.hhibernate.boot.model.naming。jpa.default.properties下的PhysicalNamingStrategyStandardImpl“
。Hibernate节点:
jpa:
default:
properties:
hibernate:
physical_naming_strategy: 'org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl'
hbm2ddl:
auto: validate
show_sql: true
1.JPA 1.1 自动扫描Entity 彻底删除persistence.xml中Entity的逐一配置,采用自动扫描。因为Weblogic/Jboss这些自带JPA支持的应用服务器有时候会多管闲事的扫描persistence.xml,因此彻底删除掉这个文件是个不错的选择。 <bean id="entityManagerFactory" class="org.springframework
我想使用Hibernate作为带有glassfish服务器的JPA提供程序。我在maven中添加了hiberante-entitymanager依赖项,但每次运行项目时都会出现这个错误。我是不是错过了另一个依赖。 这是pom.xml内容: 请帮帮忙。
1)我有2张桌子,用户和user_profile一对一关系, 用户表: id,用户名,名字,姓氏-ID有主键, 用户配置文件: id,name,user_id-ID具有主键,user _ ID具有用户表的外键 2) 以下是两个JPA实体对象 用户: 用户配置文件: 当我试图插入到两个表中时,我看到列被添加到带有值的USER表中,而我在USER_PROFILE表的列中看不到任何值。 我是这个MySQ
我已经为我的spring boot应用程序创建了所有模型,并根据业务逻辑成功地指定了它们之间的关系。在我的属性文件中,我将hibernate auto-ddl选项设置为create以根据实体之间的关系生成所有表。我也在使用liquibase进行数据库迁移。 但是,application-prod.yml中合适的方言应该是什么呢?我正在生产中使用MYSQL。我在这里使用的当前方言是“org.hibe
为什么它更高效,因为像'your_name'这样的c.name扫描只在第一个查询中发生一次。
我有Spring4+Hibernate4.3+PSQL9.5应用程序,遇到了一些camelcase字段转换的问题。