2016-04-27 29 views
0

我創建了一個數據庫,並用下面的代碼與wampserver JPA項目,不能把任何東西到DB

CREATE TABLE IF NOT EXISTS `employee` (
    `Idemployee` int(11) NOT NULL, 
    `fIrstname` varchar(45) DEFAULT NULL, 
    `lastname` varchar(45) DEFAULT NULL, 
    `emaIl` varchar(45) DEFAULT NULL 
) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8; 

-- 
-- 
-- 

INSERT INTO `employee` (`Idemployee`, `fIrstname`, `lastname`, `emaIl`) VALUES 
(2, 'Pranil', 'kharkar', '[email protected]'), 
(5, 'prasad', 'kharkar', '[email protected]'), 
(8, 'prasad', 'kharkar', '[email protected]'), 
(9, 'prasad', 'kharkar', '[email protected]'), 
(10, 'Pranil', 'kharkar', '[email protected]'), 
(11, 'Pranil', 'kharkar', '[email protected]'), 
(13, 'prasad', 'kharkar', '[email protected]'), 
(14, 'prasad', 'kharkar', '[email protected]'), 
(15, 'Murat', 'Kandemir', '[email protected]'), 
(16, 'Murat2', 'Kandemir2', '[email protected]'); 

-- 
-- 

-- 
-- 
ALTER TABLE `employee` 
    ADD PRIMARY KEY (`Idemployee`); 

-- 
-- 
-- 

-- 
-- 
-- 
ALTER TABLE `employee` 
    MODIFY `Idemployee` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=17; 

添加僱員表,然後創建JPA項目和創建這些2代碼段下方添加某人表;

package com.thejavageek.jpa; 

import java.io.IOException; 
import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 

import javax.persistence.EntityManager; 
import javax.persistence.EntityManagerFactory; 
import javax.persistence.Persistence; 

import com.thejavageek.jpa.entities.Employee; 

public class Test { 

    public static void main(String[] args) throws IOException { 

     /* Create EntityManagerFactory */ 
     EntityManagerFactory emf = Persistence 
       .createEntityManagerFactory("kurumsaljava"); 

     /* Create and populate Entity */ 
     Employee employee = new Employee(); 
     employee.setFirstname("Ahmet"); 
     employee.setLastname("Mercan"); 
     employee.setEmail("[email protected]"); 
     //employee.setIdEmployee(); 

     /* Create EntityManager */ 
     EntityManager em = emf.createEntityManager(); 

     /* Persist entity */ 
     em.getTransaction().begin(); 
     em.persist(employee); 
     em.getTransaction().commit(); 

     /* CMK UPDATE 
     */ 
     /* Update routines begin*/ 
     /* 
     int iEdit = 0; 
     BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
     System.out.print("Enter Employee Number To Edit"); 
     //String iEdit = br.readLine(); 

     try{ 
      iEdit = Integer.parseInt(br.readLine()); 
     }catch(NumberFormatException nfe){ 
      System.err.println("Invalid Format!"); 
     } 
     employee = em.find(Employee.class, iEdit); 
     em.getTransaction().begin(); 
     employee.setFirstname("Murat7"); 
     employee.setLastname("Celal"); 
     System.out.println("Employee after updation :- " + employee); 
     em.getTransaction().commit(); 
     */ 
     /*Update routines finish*/ 

     // CMK DELETE 
     /* Delete routines begin*/ 
     /* 
     int iRemove = 0; 
     BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
     System.out.print("Enter Employee Number To Remove"); 
     try{ 
      iRemove = Integer.parseInt(br.readLine()); 
     }catch(NumberFormatException nfe){ 
      System.err.println("Invalid Format!"); 
     } 
     // Remove entity 
     employee = em.find(Employee.class, iRemove); 
     System.out.println(employee); 
     em.getTransaction().begin(); 
     em.remove(employee); 
     em.getTransaction().commit(); 
     */ 
     /*Delete routines finish*/ 

     /* CMK 
     */ 

     /* Retrieve entity */ 
     /* 
     employee = em.find(Employee.class, iEdit); 
     System.out.println(employee); 
     */ 

     /* Check whether entity is removed or not */ 
     /*employee = em.find(Employee.class, 1); 
     System.out.println("Employee after removal :- " + employee);*/ 

    } 
} 

and Employee.java;

package com.thejavageek.jpa.entities;

import java.io.Serializable; 
import javax.persistence.*; 

/** 
* Entity implementation class for Entity: Employee 
* 
*/ 
@Entity 

public class Employee implements Serializable { 

    /** 
    * 
    */ 
    private static final long serialVersionUID = -6984979000774926570L; 

    @Id 
    @GeneratedValue(strategy=GenerationType.IDENTITY) 
    private int idEmployee; 

    private String email; 

    private String firstname; 

    private String lastname; 

    public Employee() { 
    } 

    public int getIdEmployee() { 
     return this.idEmployee; 
    } 

    public void setIdEmployee(int IdEmployee) { 
     this.idEmployee = IdEmployee; 
    } 

    public String getEmail() { 
     return this.email; 
    } 

    public void setEmail(String email) { 
     this.email = email; 
    } 

    public String getFirstname() { 
     return this.firstname; 
    } 

    public void setFirstname(String firstname) { 
     this.firstname = firstname; 
    } 

    public String getLastname() { 
     return this.lastname; 
    } 

    public void setLastname(String lastname) { 
     this.lastname = lastname; 
    } 

    @Override 
    public String toString() { 
     return "Employee [email=" + email 
       + ", firstname=" + firstname + ", lastname=" + lastname + "]"; 
    } 

} 

和persistence.xml中

<?xml version="1.0" encoding="UTF-8"?> 
<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="kurumsaljava"> 
     <class>com.thejavageek.jpa.entities.Employee</class> 
     <properties> 
      <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" /> 
      <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/kurumsaljava?useSSL=false" /> 
      <property name="javax.persistence.jdbc.user" value="root" /> 
      <property name="javax.persistence.jdbc.password" value="" /> 
     </properties> 
    </persistence-unit> 
</persistence> 

數據庫名稱kurumsaljava.I我得到這些錯誤不可能解決這些問題

[EL Warning]: 2016-04-27 15:45:04.913--UnitOfWork(1576499395)--Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.5.2.v20140319-9ad6abd): org.eclipse.persistence.exceptions.DatabaseException 
Internal Exception: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '?L, F?RSTNAME, LASTNAME) VALUES ('[email protected]', 'Ahmet', 'Mercan')' at line 1 
Error Code: 1064 
Call: INSERT INTO EMPLOYEE (EMAİL, FİRSTNAME, LASTNAME) VALUES (?, ?, ?) 
    bind => [3 parameters bound] 
Query: InsertObjectQuery(Employee [[email protected], firstname=Ahmet, lastname=Mercan]) 
Exception in thread "main" javax.persistence.RollbackException: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.5.2.v20140319-9ad6abd): org.eclipse.persistence.exceptions.DatabaseException 
Internal Exception: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '?L, F?RSTNAME, LASTNAME) VALUES ('[email protected]', 'Ahmet', 'Mercan')' at line 1 
Error Code: 1064 
Call: INSERT INTO EMPLOYEE (EMAİL, FİRSTNAME, LASTNAME) VALUES (?, ?, ?) 
    bind => [3 parameters bound] 
Query: InsertObjectQuery(Employee [[email protected], firstname=Ahmet, lastname=Mercan]) 
    at org.eclipse.persistence.internal.jpa.transaction.EntityTransactionImpl.commit(EntityTransactionImpl.java:157) 
    at com.thejavageek.jpa.Test.main(Test.java:35) 
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: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '?L, F?RSTNAME, LASTNAME) VALUES ('[email protected]', 'Ahmet', 'Mercan')' at line 1 
Error Code: 1064 
Call: INSERT INTO EMPLOYEE (EMAİL, FİRSTNAME, LASTNAME) VALUES (?, ?, ?) 
    bind => [3 parameters bound] 
Query: InsertObjectQuery(Employee [[email protected], firstname=Ahmet, lastname=Mercan]) 
    at org.eclipse.persistence.exceptions.DatabaseException.sqlException(DatabaseException.java:331) 
    at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.executeDirectNoSelect(DatabaseAccessor.java:900) 
    at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.executeNoSelect(DatabaseAccessor.java:962) 
    at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.basicExecuteCall(DatabaseAccessor.java:631) 
    at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.executeCall(DatabaseAccessor.java:558) 
    at org.eclipse.persistence.internal.sessions.AbstractSession.basicExecuteCall(AbstractSession.java:2002) 
    at org.eclipse.persistence.sessions.server.ClientSession.executeCall(ClientSession.java:298) 
    at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:242) 
    at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:228) 
    at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.insertObject(DatasourceCallQueryMechanism.java:377) 
    at org.eclipse.persistence.internal.queries.StatementQueryMechanism.insertObject(StatementQueryMechanism.java:165) 
    at org.eclipse.persistence.internal.queries.StatementQueryMechanism.insertObject(StatementQueryMechanism.java:180) 
    at org.eclipse.persistence.internal.queries.DatabaseQueryMechanism.insertObjectForWrite(DatabaseQueryMechanism.java:489) 
    at org.eclipse.persistence.queries.InsertObjectQuery.executeCommit(InsertObjectQuery.java:80) 
    at org.eclipse.persistence.queries.InsertObjectQuery.executeCommitWithChangeSet(InsertObjectQuery.java:90) 
    at org.eclipse.persistence.internal.queries.DatabaseQueryMechanism.executeWriteWithChangeSet(DatabaseQueryMechanism.java:301) 
    at org.eclipse.persistence.queries.WriteObjectQuery.executeDatabaseQuery(WriteObjectQuery.java:58) 
    at org.eclipse.persistence.queries.DatabaseQuery.execute(DatabaseQuery.java:899) 
    at org.eclipse.persistence.queries.DatabaseQuery.executeInUnitOfWork(DatabaseQuery.java:798) 
    at org.eclipse.persistence.queries.ObjectLevelModifyQuery.executeInUnitOfWorkObjectLevelModifyQuery(ObjectLevelModifyQuery.java:108) 
    at org.eclipse.persistence.queries.ObjectLevelModifyQuery.executeInUnitOfWork(ObjectLevelModifyQuery.java:85) 
    at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.internalExecuteQuery(UnitOfWorkImpl.java:2896) 
    at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1804) 
    at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1786) 
    at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1737) 
    at org.eclipse.persistence.internal.sessions.CommitManager.commitNewObjectsForClassWithChangeSet(CommitManager.java:226) 
    at org.eclipse.persistence.internal.sessions.CommitManager.commitAllObjectsWithChangeSet(CommitManager.java:125) 
    at org.eclipse.persistence.internal.sessions.AbstractSession.writeAllObjectsWithChangeSet(AbstractSession.java:4207) 
    at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.commitToDatabase(UnitOfWorkImpl.java:1441) 
    at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.commitToDatabaseWithChangeSet(UnitOfWorkImpl.java:1531) 
    at org.eclipse.persistence.internal.sessions.RepeatableWriteUnitOfWork.commitRootUnitOfWork(RepeatableWriteUnitOfWork.java:277) 
    at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.commitAndResume(UnitOfWorkImpl.java:1169) 
    at org.eclipse.persistence.internal.jpa.transaction.EntityTransactionImpl.commit(EntityTransactionImpl.java:132) 
    ... 1 more 
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '?L, F?RSTNAME, LASTNAME) VALUES ('[email protected]', 'Ahmet', 'Mercan')' at line 1 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) 
    at java.lang.reflect.Constructor.newInstance(Unknown Source) 
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:404) 
    at com.mysql.jdbc.Util.getInstance(Util.java:387) 
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:939) 
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3878) 
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3814) 
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2478) 
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2625) 
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2551) 
    at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1861) 
    at com.mysql.jdbc.PreparedStatement.executeUpdateInternal(PreparedStatement.java:2073) 
    at com.mysql.jdbc.PreparedStatement.executeUpdateInternal(PreparedStatement.java:2009) 
    at com.mysql.jdbc.PreparedStatement.executeLargeUpdate(PreparedStatement.java:5094) 
    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1994) 
    at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.executeDirectNoSelect(DatabaseAccessor.java:890) 
    ... 32 more 

等待你的答案。

+0

你已經看到在轉儲我假設的SQL語法錯誤? – RiggsFolly

+0

你也知道MYSQL列名是CASE SENSITIVE,當你創建表時,你在列名中使用了一些奇怪的大寫字母,但在查詢中沒有。 – RiggsFolly

+0

我應該假設你現在可以自己修復這個問題嗎? – RiggsFolly

回答

0

正如RiggsFolly上面所說的,我將Employee類的這個部分改爲了I;

@Override 
    public String toString() { 
     return "Employee [email=" + email 
       + ", firstname=" + firstname + ", lastname=" + lastname + "]"; 
    } 

} 

並增加了一些對persistence.xml的連接字符串的補充;

localhost:3306/example?useUnicode=yes&amp;characterEncoding=UTF-8&amp;useSSL=false 

,它正在THX

相關問題