在Session.save()中java hibernate错误“无法执行语句”

时间:2014-08-11 06:39:28

标签: java hibernate

/**
 * Description of bankbranchcontactdetailsBean
 *
 * @author Vishal Jain
 */
package com.beans;

import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.TableGenerator;
import javax.persistence.Id;
import javax.persistence.Column;
import javax.persistence.Temporal;
import javax.persistence.UniqueConstraint;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import java.util.Date;

@Entity(name = "bankbranchcontactdetails")
@Table(name = "bankbranchcontactdetails", schema = "stserptest", uniqueConstraints = { @UniqueConstraint(columnNames = "BankBranchContactId") })
@TableGenerator(name = "bankbranchcontactdetailsgen", table = "bankbranchcontactdetails", pkColumnName = "BankBranchContactId")
public class bankbranchcontactdetailsBean extends SuperBeanClass implements
        SuperBeanInterface {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(columnDefinition = "mysql->int(10) unsigned", name = "BankBranchContactId", precision = 10, scale = 0, nullable = false, unique = true)
    private Integer _BankBranchContactId;

    @Column(columnDefinition = "mysql->int(10) unsigned", name = "BankBranchId", precision = 10, scale = 0, nullable = false)
    private Integer _BankBranchId;

    @Column(columnDefinition = "mysql->enum('Phone','Mobile','Fax','Telex')", name = "ContactType", length = 6, nullable = false)
    private String _ContactType;

    @Column(columnDefinition = "mysql->varchar(20)", name = "Contact", length = 20, nullable = false)
    private String _Contact;

    public bankbranchcontactdetailsBean() {

        _BankBranchId = 0;
        _ContactType = "";
        _Contact = "";
    }

    public bankbranchcontactdetailsBean(Integer __BankBranchId,
            String __ContactType, String __Contact) {

        _BankBranchId = __BankBranchId;
        _ContactType = __ContactType;
        _Contact = __Contact;
    }

    public Integer getBankBranchId() {
        return _BankBranchId;
    }

    public String getContactType() {
        return _ContactType;
    }

    public String getContact() {
        return _Contact;
    }

    public void setBankBranchId(Integer NewValue) {
        _BankBranchId = NewValue;
    }

    public void setContactType(String NewValue) {
        _ContactType = NewValue;
    }

    public void setContact(String NewValue) {
        _Contact = NewValue;
    }

}

/**
  * Description of hibernate.cfg.xml
  */
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/mysql?zeroDateTimeBehavior=convertToNull</property>
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.connection.password">password</property>
        <property name="hibernate.default_schema">v32</property>
        <property name="hibernate.hbm2ddl.auto">update</property>

        <mapping class="com.stserp.beans.bankbranchcontactdetailsBean" />

    </session-factory>
</hibernate-configuration>


/**
 * Description of ManagerClass
 *
 * @author Vishal Jain
 */
package com.beans;

import java.util.ArrayList;

import javax.swing.JOptionPane;

import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;

public class ManagerClass {

    private static SessionFactory factory = null;
    private static ManagerClass _ManagerClass = null;

    public static SessionFactory createSessionFactory() {
        SessionFactory sessionFactory;
        Configuration configuration = new Configuration();
        configuration.configure();
        ServiceRegistry serviceRegistry = new ServiceRegistryBuilder()
                .applySettings(configuration.getProperties())
                .buildServiceRegistry();
        sessionFactory = configuration.buildSessionFactory(serviceRegistry);
        return sessionFactory;
    }

    public static SessionFactory getSessionFactory() {
        return factory;
    }

    public static ManagerClass getInstance() throws ExceptionInInitializerError {
        try {
            if (factory == null) {
                factory = createSessionFactory();
            }
            if (_ManagerClass == null) {
                _ManagerClass = new ManagerClass();
            }
        } catch (Throwable ex) {
            JOptionPane.showMessageDialog(
                    null,
                    "Failed to create sessionFactory object...\n"
                            + ex.getMessage(), "Error...", 0);
            throw new ExceptionInInitializerError(ex);
        } finally {
            return _ManagerClass;
        }
    }

    public ArrayList<Integer> SaveBeansList(Session session, String entityName,
            ArrayList<? extends SuperBeanClass> BeansList)
            throws HibernateException {
        ArrayList<Integer> IDs = null;
        try {
            IDs = new ArrayList<Integer>();
            for (SuperBeanClass element : BeansList) {
                IDs.add((Integer) session.save(entityName, element));
            }
        } catch (HibernateException e) {
            throw e;
        }
        return IDs;
    }

    public ArrayList<? extends SuperBeanClass> LoadTable(Session session,
            String TableName) throws HibernateException {
        ArrayList<? extends SuperBeanClass> beansList = null;
        try {
            beansList = (ArrayList<? extends SuperBeanClass>) session
                    .createQuery("FROM " + TableName).list();
        } catch (HibernateException e) {
            throw e;
        }
        return beansList;
    }

    public ArrayList<?> LoadConditional(Session session, String _query)
            throws HibernateException {
        ArrayList<?> beansList = null;
        try {
            beansList = (ArrayList<? extends SuperBeanClass>) session
                    .createQuery(_query).list();
        } catch (HibernateException e) {
            throw e;
        }
        return beansList;
    }

    public SuperBeanInterface LoadById(Session session, Class className,
            Integer ID) throws HibernateException {
        SuperBeanInterface BeanInterface = null;
        try {
            BeanInterface = (SuperBeanInterface) session.get(className, ID);
        } catch (HibernateException e) {
            throw e;
        }
        return BeanInterface;
    }

    public void DeleteById(Session session, Class className, Integer ID)
            throws HibernateException {
        try {
            session.delete(session.get(className, ID));
        } catch (HibernateException e) {
            throw e;
        }
    }
}


/**
 * Description of SuperBeanClass
 *
 * @author Vishal Jain
 */
package com.beans;

public class SuperBeanClass {
    public SuperBeanClass() {
    }
}


/**
 * Description of SuperBeanInterface
 *
 * @author Vishal Jain
 */
package com.beans;

public interface SuperBeanInterface {
}


OUTPUT

    enter code here

ClassName -- FileName -- MethodName -- LineNo.
org.hibernate.exception.internal.SQLExceptionTypeDelegate -- SQLExceptionTypeDelegate.java -- convert -- 82
org.hibernate.exception.internal.StandardSQLExceptionConverter -- StandardSQLExceptionConverter.java -- convert -- 49
org.hibernate.engine.jdbc.spi.SqlExceptionHelper -- SqlExceptionHelper.java -- convert -- 125
org.hibernate.engine.jdbc.spi.SqlExceptionHelper -- SqlExceptionHelper.java -- convert -- 110
org.hibernate.engine.jdbc.internal.ResultSetReturnImpl -- ResultSetReturnImpl.java -- executeUpdate -- 136
org.hibernate.id.IdentityGenerator$GetGeneratedKeysDelegate -- IdentityGenerator.java -- executeAndExtract -- 96
org.hibernate.id.insert.AbstractReturningDelegate -- AbstractReturningDelegate.java -- performInsert -- 58
org.hibernate.persister.entity.AbstractEntityPersister -- AbstractEntityPersister.java -- insert -- 2975
org.hibernate.persister.entity.AbstractEntityPersister -- AbstractEntityPersister.java -- insert -- 3487
org.hibernate.action.internal.EntityIdentityInsertAction -- EntityIdentityInsertAction.java -- execute -- 81
org.hibernate.engine.spi.ActionQueue -- ActionQueue.java -- execute -- 377
org.hibernate.engine.spi.ActionQueue -- ActionQueue.java -- addResolvedEntityInsertAction -- 214
org.hibernate.engine.spi.ActionQueue -- ActionQueue.java -- addInsertAction -- 194
org.hibernate.engine.spi.ActionQueue -- ActionQueue.java -- addAction -- 178
org.hibernate.event.internal.AbstractSaveEventListener -- AbstractSaveEventListener.java -- addInsertAction -- 321
org.hibernate.event.internal.AbstractSaveEventListener -- AbstractSaveEventListener.java -- performSaveOrReplicate -- 286
org.hibernate.event.internal.AbstractSaveEventListener -- AbstractSaveEventListener.java -- performSave -- 192
org.hibernate.event.internal.AbstractSaveEventListener -- AbstractSaveEventListener.java -- saveWithGeneratedId -- 125
org.hibernate.event.internal.DefaultSaveOrUpdateEventListener -- DefaultSaveOrUpdateEventListener.java -- saveWithGeneratedOrRequestedId -- 206
org.hibernate.event.internal.DefaultSaveEventListener -- DefaultSaveEventListener.java -- saveWithGeneratedOrRequestedId -- 55
org.hibernate.event.internal.DefaultSaveOrUpdateEventListener -- DefaultSaveOrUpdateEventListener.java -- entityIsTransient -- 191
org.hibernate.event.internal.DefaultSaveEventListener -- DefaultSaveEventListener.java -- performSaveOrUpdate -- 49
org.hibernate.event.internal.DefaultSaveOrUpdateEventListener -- DefaultSaveOrUpdateEventListener.java -- onSaveOrUpdate -- 90
org.hibernate.internal.SessionImpl -- SessionImpl.java -- fireSave -- 764
org.hibernate.internal.SessionImpl -- SessionImpl.java -- save -- 756
com.stserp.beans.ManagerClass -- ManagerClass.java -- SaveBeansList -- 60
com.stserp.Program -- Program.java -- main -- 73

could not execute statement

请帮助我使用本准则,因为我无法理解为什么我会收到此"could not execute statement" error.

我尝试了很多东西,但都没有奏效。有些文章甚至建议使用@cascade = {cascadeType = SAVE_UPDATE},但我不想将我的表链接到任何其他表。我应该只在代码中维护所有关系。必须有某种方法可以保存表(如果与其他表无关)。请帮忙。

1 个答案:

答案 0 :(得分:1)

请尝试为您的实体实现Serializable接口(尽管这不是Hibernate强加的)。同时将_BankBranchContactId重命名为id。并启用hibernate_sql日志记录以查看触发的sql查询。还要检查是否正确创建了模式“stserptest”。