mysql - 使用 wampserver 的 jpa 项目无法将任何内容放入数据库

标签 mysql eclipse jpa wampserver

我创建了一个数据库并使用以下代码添加了员工表

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', 'someMail@gmail.com'),
(5, 'prasad', 'kharkar', 'someMail@gmail.com'),
(8, 'prasad', 'kharkar', 'someMail@gmail.com'),
(9, 'prasad', 'kharkar', 'someMail@gmail.com'),
(10, 'Pranil', 'kharkar', 'someMail@gmail.com'),
(11, 'Pranil', 'kharkar', 'someMail@gmail.com'),
(13, 'prasad', 'kharkar', 'someMail@gmail.com'),
(14, 'prasad', 'kharkar', 'someMail@gmail.com'),
(15, 'Murat', 'Kandemir', 'cmkTurkiye@gmail.com'),
(16, 'Murat2', 'Kandemir2', 'cmkTurkiye@gmail.com');

--
--

--
--
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("cmkTurkiye@gmail.com");
        //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);*/

    }
}

和 Employee.java;

包 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。我收到这些错误无法解决

[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 ('cmkTurkiye@gmail.com', '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=cmkTurkiye@gmail.com, 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 ('cmkTurkiye@gmail.com', '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=cmkTurkiye@gmail.com, 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 ('cmkTurkiye@gmail.com', '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=cmkTurkiye@gmail.com, 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 ('cmkTurkiye@gmail.com', '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

等待您的答复。

最佳答案

正如 RiggsFolly 上面所说,我将 Employee 类的这部分 i 更改为 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

它正在工作,谢谢

关于mysql - 使用 wampserver 的 jpa 项目无法将任何内容放入数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36890511/

相关文章:

MySQL 用另一个字段的值覆盖值

mysql - SQL - Java/Eclipse - UPDATE 语句查询 [重新询问,插入更多代码]

带有命名实体图的 Spring Data JPA Pageable

java - 使用 Spring Data JPA 和 JPA EntityListener 进行字段级加密

multithreading - Play Framework 中的JPA和线程

php - Laravel如何通过积分获取当前用户位置

javascript - 解决node-mysql初始化错误?

java - 继承Eclipse插件

Eclipse CDT 找不到 opencv 2 头文件

eclipse - 谷歌云端点 : Not able to open http://localhost:8080/_ah/api/explorer behind a proxy network