0
これは簡単なものです。私はEclipselinkでJPAにおもちゃのアプリケーションを書いていますが、SSLは使用していません。エンティティマネージャが呼び出されると、以下のメッセージが表示されます。私はpersistence.xmlファイルにパラメータがないと思いますが、例外はそれほど具体的ではありません。内部例外:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:不明なエラー1049
[EL Info]: 2016-08-23 13:28:04.574--ServerSession(1586463432)--EclipseLink, version: Eclipse Persistence Services - 2.5.2.v20140319-9ad6abd
Tue Aug 23 13:28:05 EDT 2016 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
...
Internal Exception: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown error 1049
Error Code: 1049
@ em= Error message: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.5.2.v20140319-9ad6abd): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown error 1049
Error Code: 1049
javax.persistence.PersistenceException: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.5.2.v20140319-9ad6abd): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown error 1049
Error Code: 1049
at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:766)
at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.getAbstractSession(EntityManagerFactoryDelegate.java:204)
at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.createEntityManagerImpl(EntityManagerFactoryDelegate.java:304)
at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:336)
at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:302)
at com.ruleagents.hero.Main.main(Main.java:48)
Caused by: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.5.2.v20140319-9ad6abd): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown error 1049
Error Code: 1049
at org.eclipse.persistence.exceptions.DatabaseException.sqlException(DatabaseException.java:331)
at org.eclipse.persistence.exceptions.DatabaseException.sqlException(DatabaseException.java:326)
at org.eclipse.persistence.sessions.DefaultConnector.connect(DefaultConnector.java:138)
at org.eclipse.persistence.sessions.DatasourceLogin.connectToDatasource(DatasourceLogin.java:162)
at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.setOrDetectDatasource(DatabaseSessionImpl.java:204)
at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.loginAndDetectDatasource(DatabaseSessionImpl.java:741)
at org.eclipse.persistence.internal.jpa.EntityManagerFactoryProvider.login(EntityManagerFactoryProvider.java:239)
at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:685)
... 5 more
...
Exception in thread "main" java.lang.NullPointerException
at com.ruleagents.hero.Main.main(Main.java:62)
これは、persistence.xmlの
<persistence version="2.1"
xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
<persistence-unit name="CharacterManager"
transaction-type="RESOURCE_LOCAL">
<provider>
org.eclipse.persistence.jpa.PersistenceProvider
</provider>
<class>com.ruleagents.hero.Hero</class>
<class>com.ruleagents.hero.Logon</class>
<!-- class>com.ruleagents.hero.Stat</class -->
<properties>
<property name="javax.persistence.jdbc.driver" value='com.mysql.jdbc.Driver' />
<property name="javax.persistence.jdbc.url"
value="jdbc:mysql://localhost:3306/CharacterManager" />
<property name="javax.persistence.jdbc.user" value="root" />
<property name="eclipselink.ddl-generation" value="drop-and-create-tables" />
<property name="eclipselink.ddl-generation.output-mode" value="database" />
<property name="useSSL" value="false" />
<property name="javax.persistence.jdbc.user" value="root"/>
</properties>
</persistence-unit>
</persistence>
であり、これは、それが呼ばれる方法です。
public static EntityManagerFactory getEMF(){
try {
if (emf == null){
emf = Persistence.createEntityManagerFactory("CharacterManager");
...
EntityManager em = null;
try {
em = getEMF().createEntityManager();
em.getTransaction().begin();
em.persist(user);
私はこれは、MySQLに接続するために取得するために変更する必要がありますか?感謝!
真上にhttps://dev.mysql.com/doc/connector-j/5.1/en/connector-j-reference-configuration-properties.html useSslオプションはデフォルトによると、 MySQL 5.5.45+。 falseを指定してみてください - URLにプロパティを追加する方法についてはリンクを参照してください – Chris