(sorry for my english, this is not my natural language)
So, I have a MAVEN + SPRING + JPA + HIBERNATE + MSYQL application. I want to upgrade hibernate 4.3.11 to the latest version of hibernate v5.
before
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>4.3.11.Final</version>
</dependency>
after
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>5.1.0.Final</version>
</dependency>
But when I try to access an entity whose table is not in the default schema, I have an error. Before the upgrade, it was good. Access to an entity whose table in the scheme works by default with sleeping V5.
The default schema is "roles", but in the whole essence of my application, I highlight the schema in @table JPA Annotation. Even if the schema is "roles"
Essence:
@Entity
@Table(schema="modeler",name="concept")
public class Concept {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(unique=true, nullable=false, updatable = false)
private int idconcept;
@Column(name="action_date", nullable=false)
protected LocalDate actionDate;
...
public Concept() {}
...
}
When I try to read access with this object, I have a Java error:
Exception: org.hibernate.exception.SQLGrammarException: could not extract ResultSet
In the stack, the cause is :
"errorCode": 1146,
"nextException": null,
"sqlstate": "42S02",
"localizedMessage": "Table 'roles.concept' doesn't exist",
"message": "Table 'roles.concept' doesn't exist",
"suppressed": []
in the log of hibernate, i saw the sql order doesn't contain the schema.
Sql order with hibernate 5
select concept0_.idconcept as idconcep1_0_, concept0_.action_date a saction_d2_0_, ..., from concept concept0_
Sql order before with hibernate 4.3.11
select concept0_.idconcept as idconcep1_0_, concept0_.action_date a saction_d2_0_, ..., from modeler.concept concept0_
, , hibernate_sequence
Exception: org.hibernate.exception.SQLGrammarException: error performing isolated work
In the stack, the cause is
"errorCode": 1146,
"nextException": null,
"sqlstate": "42S02",
"localizedMessage": "Table 'roles.hibernate_sequence' doesn't exist",
"message": "Table 'roles.hibernate_sequence' doesn't exist",
"suppressed": []
in the log of hibernate, the sql order doesn't contain the schema.
select next_val as id_val from hibernate_sequence for update
--> but, it seems that it the same schema problem as in read access.
, .
, v5.0.8 .
.
, V5.0.8.
, , :
xml SPRING .
.
xml spring
<tx:annotation-driven transaction-manager="transactionManager" />
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="persistenceXmlLocation" value="classpath:config/persistence.xml" />
<property name="persistenceUnitName" value="demoRestPersistence" />
<property name="dataSource" ref="restDemoDS" />
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
</bean>
</property>
<property name="jpaPropertyMap">
<map>
<entry key="hibernate.show_sql" value="true" />
<entry key="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />
<entry key="hibernate.implicit_naming_strategy" value="org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyJpaImpl" />
</map>
</property>
</bean>
<bean id="restDemoDS"
class="org.springframework.jdbc.datasource.DriverManagerDataSource"
scope="singleton">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/roles" />
<property name="username" value="***" />
<property name="password" value="******" />
</bean>
.