Я получаю очень смутное исключение из спящего режима при попытке использовать его с Oracle (он работает в обычном режиме с MySQL)Hibernate, Oracle, Play: Невозможно построить EntityManagerFactory ошибки
Я имею следующую конфигурацию:.
Play Framework: 2.3.7
ojdbc14.jar
Hibernate: 4.3.8.Final
Я использую Oracle 10i
Приложение управляет для соединения, но сбой при попытке создания Менеджера сущностей. Я попытался создать его вручную, но я получил ту же ошибку при использовании аннотации воспроизведения @ play.db.jpa.Transactional
Например: Доступ через raw JDBC работает нормально.
Мои настройки базы данных в application.conf:
db.default.driver=oracle.jdbc.driver.OracleDriver
db.default.url="jdbc:oracle:thin:@IP:1521:SID"
db.default.user=USER_NAME
db.default.pass=ROOT
db.default.jndiName=DefaultDS
jpa.default=defaultPersistenceUnit
Мои persistence.xml:
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
version="2.0">
<persistence-unit name="defaultPersistenceUnit" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<non-jta-data-source>DefaultDS</non-jta-data-source>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect" />
</properties>
</persistence-unit>
</persistence>
Вот исключение:
play.api.UnexpectedException: Unexpected exception[PersistenceException: Unable to build entity manager factory]
at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1$$anonfun$1.apply(ApplicationProvider.scala:166) ~[play_2.11-2.3.7.jar:2.3.7]
at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1$$anonfun$1.apply(ApplicationProvider.scala:130) ~[play_2.11-2.3.7.jar:2.3.7]
at scala.Option.map(Option.scala:145) ~[scala-library-2.11.1.jar:na]
at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1.apply(ApplicationProvider.scala:130) ~[play_2.11-2.3.7.jar:2.3.7]
at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1.apply(App licationProvider.scala:128) ~[play_2.11-2.3.7.jar:2.3.7]
Caused by: javax.persistence.PersistenceException: Unable to build entity manager factory
at org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:83) ~[hibernate-entitymanager-4.3.8.Final.jar:4.3.8.Final]
at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:54) ~[hibernate-entitymanager-4.3.8.Final.jar:4.3.8.Final]
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:55) ~[hibernate-jpa-2.1-api-1.0.0.Final.jar:1.0.0.Final]
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:39) ~[hibernate-jpa-2.1-api-1.0.0.Final.jar:1.0.0.Final]
at play.db.jpa.JPAPlugin.onStart(JPAPlugin.java:38) ~[play-java-jpa_2.11-2.3.7.jar:2.3.7]
Caused by: java.lang.NullPointerException: null
at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:244) ~[hibernate-core-4.3.8.Final.jar:4.3.8.Final]
at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:111) ~[hibernate-core-4.3.8.Final.jar:4.3.8.Final]
at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:234) ~[hibernate-core-4.3.8.Final.jar:4.3.8.Final]
at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:206) ~[hibernate-core-4.3.8.Final.jar:4.3.8.Final]
at org.hibernate.cfg.Configuration.buildTypeRegistrations(Configuration.java:1887) ~[hibernate-core-4.3.8.Final.jar:4.3.8.Final]
//////// /////////////////////////////////////
ОБНОВЛЕНО:
Свойства, спящий получает являются:
0 = {[email protected]} "gopherProxySet" -> "false"
1 = {[email protected]} "awt.toolkit" -> "sun.lwawt.macosx.LWCToolkit"
2 = {[email protected]} "file.encoding.pkg" -> "sun.io"
3 = {[email protected]} "java.specification.version" -> "1.8"
4 = {[email protected]} "sun.cpu.isalist" ->
5 = {[email protected]} "sun.jnu.encoding" -> "UTF-8"
6 = {[email protected]} "hibernate.dialect" -> "org.hibernate.dialect.Oracle10gDialect"
7 = {[email protected]} "java.class.path" -> "/Users/rodrigoarantes1/Library/Application Support/IntelliJIdea14/Scala/launcher/sbt-launch.jar:/Applications/IntelliJ IDEA 14.app/Contents/lib/idea_rt.jar"
8 = {[email protected]} "java.naming.provider.url" -> "/"
9 = {[email protected]} "sbt.global.base" -> "/private/var/folders/8l/k806t46d2fl5sq2rt6gzp7z00000gp/T/sbt-global-plugin1stub"
10 = {[email protected]} "java.vm.vendor" -> "Oracle Corporation"
11 = {[email protected]} "sun.arch.data.model" -> "64"
12 = {[email protected]} "jline.shutdownhook" -> "false"
13 = {[email protected]} "java.vendor.url" -> "http://java.oracle.com/"
15 = {[email protected]} "javax.persistence.jdbc.user" -> "USERNAME"
16 = {[email protected]} "hibernate.transaction.factory_class" -> "class org.hibernate.engine.transaction.internal.jdbc.JdbcTransactionFactory"
17 = {[email protected]} "javax.persistence.jdbc.url" -> "jdbc:oracle:thin:@127.0.0.1:1521:XE"
18 = {[email protected]} "jline.terminal" -> "none"
19 = {[email protected]} "os.name" -> "Mac OS X"
20 = {[email protected]} "java.vm.specification.version" -> "1.8"
21 = {[email protected]} "sun.java.launcher" -> "SUN_STANDARD"
23 = {[email protected]} "sun.boot.library.path" -> "/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/jre/lib"
24 = {[email protected]} "sun.java.command" -> "xsbt.boot.Boot run"
25 = {[email protected]} "http.nonProxyHosts" -> "local|*.local|169.254/16|*.169.254/16"
26 = {[email protected]} "sun.cpu.endian" -> "little"
27 = {[email protected]} "user.home" -> "/Users/rodrigoarantes1"
28 = {[email protected]} "user.language" -> "en"
29 = {[email protected]} "java.specification.vendor" -> "Oracle Corporation"
30 = {[email protected]} "java.home" -> "/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/jre"
31 = {[email protected]} "file.separator" -> "/"
32 = {[email protected]} "line.separator" -> "\n"
33 = {[email protected]} "java.vm.specification.vendor" -> "Oracle Corporation"
34 = {[email protected]} "java.specification.name" -> "Java Platform API Specification"
35 = {[email protected]} "java.awt.graphicsenv" -> "sun.awt.CGraphicsEnvironment"
36 = {[email protected]} "javax.persistence.jdbc.driver" -> "oracle.jdbc.driver.OracleDriver"
37 = {[email protected]} "sun.boot.class.path" -> "/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/jre/lib/resources.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/jre/lib/rt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/jre/lib/sunrsasign.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/jre/lib/jsse.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/jre/lib/jce.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/jre/lib/charsets.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/jre/lib/jfr.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/jre/classes"
38 = {[email protected]} "jline.esc.timeout" -> "0"
39 = {[email protected]} "sun.management.compiler" -> "HotSpot 64-Bit Tiered Compilers"
40 = {[email protected]} "ftp.nonProxyHosts" -> "local|*.local|169.254/16|*.169.254/16"
41 = {[email protected]} "java.runtime.version" -> "1.8.0_45-b14"
42 = {[email protected]} "java.naming.factory.initial" -> "tyrex.naming.MemoryContextFactory"
43 = {[email protected]} "user.name" -> "rodrigoarantes1"
44 = {[email protected]} "path.separator" -> ":"
45 = {[email protected]} "os.version" -> "10.10.4"
46 = {[email protected]} "java.endorsed.dirs" -> "/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/jre/lib/endorsed"
47 = {[email protected]} "java.runtime.name" -> "Java(TM) SE Runtime Environment"
48 = {[email protected]} "sbt.log.noformat" -> "true"
49 = {[email protected]} "hibernate.ejb.persistenceUnitName" -> "oraclePersistenceUnit"
50 = {[email protected]} "file.encoding" -> "UTF8"
51 = {[email protected]} "sun.nio.ch.bugLevel" ->
52 = {[email protected]} "java.vm.name" -> "Java HotSpot(TM) 64-Bit Server VM"
53 = {[email protected]} "java.vendor.url.bug" -> "http://bugreport.sun.com/bugreport/"
54 = {[email protected]} "java.io.tmpdir" -> "/var/folders/8l/k806t46d2fl5sq2rt6gzp7z00000gp/T/"
55 = {[email protected]} "java.version" -> "1.8.0_45"
57 = {[email protected]} "os.arch" -> "x86_64"
58 = {[email protected]} "java.vm.specification.name" -> "Java Virtual Machine Specification"
59 = {[email protected]} "java.awt.printerjob" -> "sun.lwawt.macosx.CPrinterJob"
60 = {[email protected]} "sun.os.patch.level" -> "unknown"
61 = {[email protected]} "java.library.path" -> ":/Library/Oracle/instantclient_11_2:/Users/rodrigoarantes1/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:.:/Users/rodrigoarantes1/SourceTree-Repos/Project/target/native_libraries/64bits"
62 = {[email protected]} "java.vendor" -> "Oracle Corporation"
63 = {[email protected]} "java.vm.info" -> "mixed mode"
64 = {[email protected]} "java.vm.version" -> "25.45-b02"
65 = {[email protected]} "hibernate.bytecode.use_reflection_optimizer" -> "false"
66 = {[email protected]} "hibernate.connection.datasource" -> "OracleDS"
67 = {[email protected]} "sun.io.unicode.encoding" -> "UnicodeBig"
68 = {[email protected]} "java.ext.dirs" -> "/Users/rodrigoarantes1/Library/Java/Extensions:/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/jre/lib/ext:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java"
69 = {[email protected]} "javax.persistence.jdbc.password" -> "ROOT"
70 = {[email protected]} "java.class.version" -> "52.0"
71 = {[email protected]} "socksNonProxyHosts" -> "local|*.local|169.254/16|*.169.254/16"
Подробнее: метаданных, сгенерированных спящего режима является:
connection = {[email protected]}
url = {[email protected]} "jdbc:oracle:thin:@127.0.0.1:1521:XE"
user = {[email protected]} "USER_NAME"
password = {[email protected]} "ROOT"
database = {[email protected]} "127.0.0.1:1521:XE"
auto_commit = true
protocol = {[email protected]} "thin"
db_access = {[email protected]}
conversion = {[email protected]}
lob_dbaccess = null
XA_wants_error = false
UsingXA = false
m_txn_mode = 0
fdo = null
big_endian = null
statement_table = {[email protected]} size = 0
closed = false
m_clientIdSet = false
m_clientId = null
default_batch = 1
default_row_prefetch = 10
report_remarks = false
include_synonyms = false
restrict_getTables = false
m_accumulateBatchResult = true
m_j2ee13Compliant = false
m_v8compatible = false
looseTimestampDateCheck = false
dataSizeScale = 1
noCachingBuffer = false
trans_level = 2
map = null
m_javaObjectMap = {[email protected]} size = 0
descriptorCache = {[email protected]} size = 0
statement_holding_line = null
m_dbMetaData = {[email protected]}
connection = {[email protected]}
url = {[email protected]} "jdbc:oracle:thin:@127.0.0.1:1521:XE"
user = {[email protected]} "USER_NAME"
password = {[email protected]} "ROOT"
database = {[email protected]} "127.0.0.1:1521:XE"
auto_commit = true
protocol = {[email protected]} "thin"
db_access = {[email protected]}
conversion = {[email protected]}
lob_dbaccess = null
XA_wants_error = false
UsingXA = false
m_txn_mode = 0
fdo = null
big_endian = null
statement_table = {[email protected]} size = 0
closed = false
m_clientIdSet = false
m_clientId = null
default_batch = 1
default_row_prefetch = 10
report_remarks = false
include_synonyms = false
restrict_getTables = false
m_accumulateBatchResult = true
m_j2ee13Compliant = false
m_v8compatible = false
looseTimestampDateCheck = false
dataSizeScale = 1
noCachingBuffer = false
trans_level = 2
map = null
m_javaObjectMap = {[email protected]} size = 0
descriptorCache = {[email protected]} size = 0
statement_holding_line = null
m_dbMetaData = {[email protected]}
connection = {[email protected]}
url = {[email protected]} "jdbc:oracle:thin:@127.0.0.1:1521:XE"
user = {[email protected]} "USER_NAME"
password = {[email protected]} "ROOT"
database = {[email protected]} "127.0.0.1:1521:XE"
auto_commit = true
protocol = {[email protected]} "thin"
db_access = {[email protected]}
conversion = {[email protected]}
lob_dbaccess = null
XA_wants_error = false
UsingXA = false
m_txn_mode = 0
fdo = null
big_endian = null
statement_table = {[email protected]} size = 0
closed = false
m_clientIdSet = false
m_clientId = null
default_batch = 1
default_row_prefetch = 10
report_remarks = false
include_synonyms = false
restrict_getTables = false
m_accumulateBatchResult = true
m_j2ee13Compliant = false
m_v8compatible = false
looseTimestampDateCheck = false
dataSizeScale = 1
noCachingBuffer = false
trans_level = 2
map = null
m_javaObjectMap = {[email protected]} size = 0
descriptorCache = {[email protected]} size = 0
statement_holding_line = null
m_dbMetaData = {[email protected]}
physicalStatus = true
logicalHandle = false
m_opc = null
m_opc_oc = null
m_osql = {[email protected]}
m_warning = null
m_readOnly = false
m_startTime = 0
statementCache = null
m_stmtClearMetaData = false
m_process_escapes = true
m_defaultAutoRefetch = true
m_occ = null
m_privData = null
defaultFixedString = false
m_svptStmt = null
wrapper = null
connectionProperties = {[email protected]} size = 3
timeout = null
m_clientData = null
m_sessionTimeZone = null
m_dbTzCalendar = null
procedureResultUnknown = 0
procedureNoResult = 1
procedureReturnsResult = 2
procedureColumnUnknown = 0
procedureColumnIn = 1
procedureColumnInOut = 2
procedureColumnOut = 4
procedureColumnReturn = 5
procedureColumnResult = 3
procedureNoNulls = 0
procedureNullable = 1
procedureNullableUnknown = 2
columnNoNulls = 0
columnNullable = 1
columnNullableUnknown = 2
versionColumnUnknown = 0
versionColumnNotPseudo = 1
versionColumnPseudo = 2
importedKeyCascade = 0
importedKeyRestrict = 1
importedKeySetNull = 2
typeNoNulls = 0
typeNullable = 1
typeNullableUnknown = 2
typePredNone = 0
typePredChar = 1
typePredBasic = 2
typeSearchable = 3
tableIndexStatistic = 0
tableIndexClustered = 1
tableIndexHashed = 2
tableIndexOther = 3
attributeNoNulls = 0
attributeNullable = 1
attributeNullableUnknown = 2
sqlStateXOpen = 1
sqlStateSQL99 = 2
physicalStatus = true
logicalHandle = false
m_opc = null
m_opc_oc = null
m_osql = {[email protected]}
isV8Compatible = false
current_argument = 1
parameterCount = 0
i = 26
length = 26
c = 'E' 69
first = false
in_string = false
odbc_sql = {[email protected]} "SET TRANSACTION READ WRITE"
oracle_sql = {[email protected]} "SET TRANSACTION READ WRITE"
token_buffer = {[email protected]} ""
isLocate = false
m_warning = null
m_readOnly = false
m_startTime = 0
statementCache = null
m_stmtClearMetaData = false
m_process_escapes = true
m_defaultAutoRefetch = true
m_occ = null
m_privData = null
defaultFixedString = false
m_svptStmt = null
wrapper = null
connectionProperties = {[email protected]} size = 3
0 = {[email protected]} "user" -> "USER_NAME"
1 = {[email protected]} "dll" -> "ocijdbc9"
2 = {[email protected]} "protocol" -> "thin"
timeout = null
m_clientData = null
m_sessionTimeZone = null
m_dbTzCalendar = null
procedureResultUnknown = 0
procedureNoResult = 1
procedureReturnsResult = 2
procedureColumnUnknown = 0
procedureColumnIn = 1
procedureColumnInOut = 2
procedureColumnOut = 4
procedureColumnReturn = 5
procedureColumnResult = 3
procedureNoNulls = 0
procedureNullable = 1
procedureNullableUnknown = 2
columnNoNulls = 0
columnNullable = 1
columnNullableUnknown = 2
versionColumnUnknown = 0
versionColumnNotPseudo = 1
versionColumnPseudo = 2
importedKeyCascade = 0
importedKeyRestrict = 1
importedKeySetNull = 2
typeNoNulls = 0
typeNullable = 1
typeNullableUnknown = 2
typePredNone = 0
typePredChar = 1
typePredBasic = 2
typeSearchable = 3
tableIndexStatistic = 0
tableIndexClustered = 1
tableIndexHashed = 2
tableIndexOther = 3
attributeNoNulls = 0
attributeNullable = 1
attributeNullableUnknown = 2
sqlStateXOpen = 1
sqlStateSQL99 = 2
physicalStatus = true
logicalHandle = false
m_opc = null
m_opc_oc = null
m_osql = {[email protected]}
isV8Compatible = false
current_argument = 1
parameterCount = 0
i = 26
length = 26
c = 'E' 69
first = false
in_string = false
odbc_sql = {[email protected]} "SET TRANSACTION READ WRITE"
oracle_sql = {[email protected]} "SET TRANSACTION READ WRITE"
token_buffer = {[email protected]} ""
isLocate = false
m_warning = null
m_readOnly = false
m_startTime = 0
statementCache = null
m_stmtClearMetaData = false
m_process_escapes = true
m_defaultAutoRefetch = true
m_occ = null
m_privData = null
defaultFixedString = false
m_svptStmt = null
wrapper = null
connectionProperties = {[email protected]} size = 3
timeout = null
m_clientData = null
m_sessionTimeZone = null
m_dbTzCalendar = null
procedureResultUnknown = 0
procedureNoResult = 1
procedureReturnsResult = 2
procedureColumnUnknown = 0
procedureColumnIn = 1
procedureColumnInOut = 2
procedureColumnOut = 4
procedureColumnReturn = 5
procedureColumnResult = 3
procedureNoNulls = 0
procedureNullable = 1
procedureNullableUnknown = 2
columnNoNulls = 0
columnNullable = 1
columnNullableUnknown = 2
versionColumnUnknown = 0
versionColumnNotPseudo = 1
versionColumnPseudo = 2
importedKeyCascade = 0
importedKeyRestrict = 1
importedKeySetNull = 2
typeNoNulls = 0
typeNullable = 1
typeNullableUnknown = 2
typePredNone = 0
typePredChar = 1
typePredBasic = 2
typeSearchable = 3
tableIndexStatistic = 0
tableIndexClustered = 1
tableIndexHashed = 2
tableIndexOther = 3
attributeNoNulls = 0
attributeNullable = 1
attributeNullableUnknown = 2
sqlStateXOpen = 1
sqlStateSQL99 = 2
Исключение броска Hibernate:
Файл: JdbcServicesImpl.java
Метод: meta.supportsNamedParameters();
SQLState = null
vendorCode = 17023
next = null
detailMessage = {[email protected]} "Unsupported feature"
cause = {[email protected]} "java.sql.SQLException: Unsupported feature"
stackTrace = {StackTraceElement[0]@13600}
suppressedExceptions = {[email protected]} size = 0
Может кто-нибудь помочь мне выяснить, что проблема может быть и как ее решить? Любая помощь действительно оценена.
Спасибо
Приложение уже отсылают пользователя, пароль, адрес и драйвер через application.conf. Я попробую обходное решение сегодня, и если все будет хорошо, я отправлю ответ. Спасибо за ответ. Я весьма признателен. – rodrigoArantes
проблем нет, всегда приятно помогать другим людям. можете ли вы показать мне код того, как вы передаете свойства своей группе персистентности? просто currius, потому что я не понимаю из вашего кода. смотрите здесь http://grepcode.com/file/repo1.maven.org/maven2/org.hibernate/hibernate-core/4.3.8.Final/org/hibernate/engine/jdbc/internal/JdbcServicesImpl.java#JdbcServicesImpl кажется, что гибернативный диалект равен нулю – giannisapi
Привет @giannisapi Я добавил дополнительную информацию о проблеме. Исключение генерируется, когда Hibernate вызывает метод поддержкиNamedParameters() в JdbcServicesImpl. Вот почему я получаю нулевой указатель при доступе к диалекту. В вопросе были добавлены сведения о передаваемых настройках и исключении. Некоторые утверждают, что это исключение вызвано функцией AutoGeneratedKeys (которая не поддерживается Oracle), но я должен определить, где она передается (PS .: У меня нет объектов JPA, настроенных.). Я очень ценю помощь, которую вы даете. спасибо – rodrigoArantes