Since it's an SQLGrammarException, check the SQL queries generated by Hibernate. Either set hibernate configuration's "hibernate.show_sql" to true, or set the logging category "org.hibernate.SQL" to debug or trace.
See
Hibernate Logging.
There are many ways in which queries that work in a dev machine may fail in a production machine.
One possibility is that the database versions on dev and production are very different, and what is valid in newer version dialect may not be in the older one.
Another example is a MySQL gotcha related to how OSes handle filename cases that I had run into a long time back.
My dev machine was a Windows machine and production was a Linux machine. MySQL stores each database and table as files.
Since Windows ignores filename cases, "mydir/mytable" and "mydir/MyTable" are the same file in Windows. An SQL query can use any case variation on that and still work because the OS finds the table file just fine.
But not so in case sensitive Linux.
I had to change the schema creation scripts and my queries to use the same case. Everything in lower case always is a good rule to follow.
I don't know if that's the problem here, but verify once that cases are consistent, especially if your dev machine is Windows.