Bug 1170257
Summary: | (6.4.z) [HHH-9718] hibernate validation false positive | |||
---|---|---|---|---|
Product: | [JBoss] JBoss Enterprise Application Platform 6 | Reporter: | Fedor Gavrilov <fgavrilo> | |
Component: | Hibernate | Assignee: | Gail Badner <gbadner> | |
Status: | CLOSED WONTFIX | QA Contact: | Martin Simka <msimka> | |
Severity: | unspecified | Docs Contact: | ||
Priority: | unspecified | |||
Version: | 6.1.1 | CC: | bbaranow, cdewolf, gbadner, jawilson, jmartisk, msimka, smarlow, thofman | |
Target Milestone: | --- | |||
Target Release: | EAP 6.4.1 | |||
Hardware: | Unspecified | |||
OS: | Unspecified | |||
Whiteboard: | ||||
Fixed In Version: | Doc Type: | Bug Fix | ||
Doc Text: | Story Points: | --- | ||
Clone Of: | ||||
: | 1177122 (view as bug list) | Environment: | ||
Last Closed: | 2015-04-20 19:39:31 UTC | Type: | Bug | |
Regression: | --- | Mount Type: | --- | |
Documentation: | --- | CRM: | ||
Verified Versions: | Category: | --- | ||
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | ||
Cloudforms Team: | --- | Target Upstream Version: | ||
Embargoed: | ||||
Bug Depends On: | ||||
Bug Blocks: | 1177122, 1196113 |
Description
Fedor Gavrilov
2014-12-03 15:53:15 UTC
This can also be reproduced using H2 database and jboss-hibernate4 quickstart project. Steps: 1) in the quickstart project, configure hibernate.hbm2ddl.auto=validate and a database connection to standalone H2 database (default user) 2) run standalone database, create MemberHibernate4Demo table, but in different schema than PUBLIC 3) build and deploy quickstart on EAP (hibernate validation succeeds) 4) visit the quickstart in browser (http://127.0.0.1:8080/jboss-hibernate4/) => following exception is thrown: org.h2.jdbc.JdbcSQLException: Table "MEMBERHIBERNATE4DEMO" not found; SQL statement: select this_.id as id1_0_0_, this_.address as address2_0_0_, this_.email as email3_0_0_, this_.name as name4_0_0_, this_.phone_number as phone_nu5_0_0_ from MemberHibernate4Demo this_ order by this_.name asc [42102-168] at org.h2.message.DbException.getJdbcSQLException(DbException.java:329) at org.h2.message.DbException.get(DbException.java:169) at org.h2.message.DbException.get(DbException.java:146) at org.h2.command.Parser.readTableOrView(Parser.java:4770) at org.h2.command.Parser.readTableFilter(Parser.java:1084) at org.h2.command.Parser.parseSelectSimpleFromPart(Parser.java:1690) at org.h2.command.Parser.parseSelectSimple(Parser.java:1797) at org.h2.command.Parser.parseSelectSub(Parser.java:1684) at org.h2.command.Parser.parseSelectUnion(Parser.java:1527) at org.h2.command.Parser.parseSelect(Parser.java:1515) at org.h2.command.Parser.parsePrepared(Parser.java:405) at org.h2.command.Parser.parse(Parser.java:279) at org.h2.command.Parser.parse(Parser.java:251) at org.h2.command.CommandContainer.recompileIfRequired(CommandContainer.java:52) at org.h2.command.CommandContainer.query(CommandContainer.java:82) at org.h2.command.Command.executeQuery(Command.java:191) at org.h2.server.TcpServerThread.process(TcpServerThread.java:306) at org.h2.server.TcpServerThread.run(TcpServerThread.java:149) at java.lang.Thread.run(Thread.java:745) org.h2.engine.SessionRemote.done(SessionRemote.java:567) org.h2.command.CommandRemote.executeQuery(CommandRemote.java:151) org.h2.jdbc.JdbcPreparedStatement.executeQuery(JdbcPreparedStatement.java:109) org.jboss.jca.adapters.jdbc.WrappedPreparedStatement.executeQuery(WrappedPreparedStatement.java:462) org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:79) org.hibernate.loader.Loader.getResultSet(Loader.java:2062) org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1859) org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1838) org.hibernate.loader.Loader.doQuery(Loader.java:906) ... The problem only occurs when schema is not defined in @Table annotation. Hibernate validator searches for all tables with name, schema and catalog defined by the @Table annotation. Since the latter two are null, all tables with given name are found, no matter which catalog they are in. First table in order is then accepted. When performing queries (criteria in this case), only information from @Table annotation is used, so jdbc is given unqualified table name and throws an exception if given table is not present in default schema. Hibernate Jira issue: https://hibernate.atlassian.net/browse/HHH-9550 This will not be fixed in EAP 6.4.0 ER1. If it is considered a blocker, it may be able to be fixed for ER2. The workaround is to provide the default schema/catalog in the @Table annotation. The fix for HHH-9550 was to the master branch only. I've cloned that issue to HHH-9718 for fixing in 4.2 and 4.3 branches. |