2016-08-23 2 views
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로 연결 얻기 위해 변경해야합니까? 감사!

+0

useSSL 기본적으로 사실에를로 MySQL 5.5.45 이상. false를 지정해보십시오. URL에 속성을 추가하는 방법은 링크를 참조하십시오. – Chris

답변

관련 문제