Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 通过实体管理器保存时无法准备语句_Java_Hibernate - Fatal编程技术网

Java 通过实体管理器保存时无法准备语句

Java 通过实体管理器保存时无法准备语句,java,hibernate,Java,Hibernate,我有以下错误: 07:27:02,736 INFO Version:37 - HCANN000001: Hibernate Commons Annotations {4.0.1.Final} 07:27:02,745 INFO Version:41 - HHH000412: Hibernate Core {4.2.0.Final} 07:27:02,755 INFO Environment:239 - HHH000206: hibernate.properties not found 07

我有以下错误:

07:27:02,736  INFO Version:37 - HCANN000001: Hibernate Commons Annotations {4.0.1.Final}
07:27:02,745  INFO Version:41 - HHH000412: Hibernate Core {4.2.0.Final}
07:27:02,755  INFO Environment:239 - HHH000206: hibernate.properties not found
07:27:02,757  INFO Environment:342 - HHH000021: Bytecode provider name : javassist
07:27:02,799  INFO Configuration:1933 - HHH000043: Configuring from resource: ./hibernate.cfg.xml
07:27:02,799  INFO Configuration:1952 - HHH000040: Configuration resource: ./hibernate.cfg.xml
07:27:02,888  WARN DTDEntityResolver:74 - HHH000223: Recognized obsolete hibernate namespace http://hibernate.sourceforge.net/. Use namespace http://www.hibernate.org/dtd/ instead. Refer to Hibernate 3.6 Migration Guide!
07:27:02,960  INFO Configuration:2074 - HHH000041: Configured SessionFactory: null
07:27:03,677  INFO DriverManagerConnectionProviderImpl:98 - HHH000402: Using Hibernate built-in connection pool (not for production use!)
07:27:03,712  INFO DriverManagerConnectionProviderImpl:134 - HHH000115: Hibernate connection pool size: 20
07:27:03,713  INFO DriverManagerConnectionProviderImpl:137 - HHH000006: Autocommit mode: false
07:27:03,713  INFO DriverManagerConnectionProviderImpl:151 - HHH000401: using driver [com.mysql.jdbc.Driver] at URL [jdbc:mysql://localhost/ForBook]
07:27:03,713  INFO DriverManagerConnectionProviderImpl:156 - HHH000046: Connection properties: {user=root, password=****}
07:27:05,539  INFO Dialect:128 - HHH000400: Using dialect: org.hibernate.dialect.MySQLDialect
07:27:05,570  INFO LobCreatorBuilder:94 - HHH000423: Disabling contextual LOB creation as JDBC driver reported JDBC version [3] less than 4
07:27:05,608  INFO TransactionFactoryInitiator:68 - HHH000399: Using default transaction strategy (direct JDBC transactions)
07:27:05,633  INFO ASTQueryTranslatorFactory:48 - HHH000397: Using ASTQueryTranslatorFactory
07:27:05,822  INFO Version:39 - HSEARCH000034: Hibernate Search 4.3.0.Alpha1
07:27:05,988  WARN ConfigContext:301 - HSEARCH000075: Configuration setting hibernate.search.lucene_version was not specified, using LUCENE_CURRENT.
07:27:06,703  INFO SchemaExport:343 - HHH000227: Running hbm2ddl schema export
07:27:06,704 DEBUG SchemaExport:353 - Import file not found: /import.sql
07:27:06,706 DEBUG SQL:104 - alter table BEE drop foreign key FK100622C0E7E16
07:27:07,463 DEBUG SQL:104 - drop table if exists BEE
07:27:07,829 DEBUG SQL:104 - drop table if exists HONEY
07:27:07,999 DEBUG SQL:104 - create table BEE (id integer not null auto_increment, city varchar(255), street varchar(255), myEnum varchar(255), nameOfBee varchar(255), honey_id integer not null, primary key (id))
07:27:08,533 DEBUG SQL:104 - create table HONEY (honey_id integer not null auto_increment, NAME_OF_HONEY varchar(255), taste varchar(255), primary key (honey_id))
07:27:08,955 DEBUG SQL:104 - alter table BEE add index FK100622C0E7E16 (honey_id), add constraint FK100622C0E7E16 foreign key (honey_id) references HONEY (honey_id)
07:27:10,344  INFO SchemaExport:405 - HHH000230: Schema export complete
07:27:10,667  INFO DriverManagerConnectionProviderImpl:98 - HHH000402: Using Hibernate built-in connection pool (not for production use!)
07:27:10,680  INFO DriverManagerConnectionProviderImpl:134 - HHH000115: Hibernate connection pool size: 20
07:27:10,681  INFO DriverManagerConnectionProviderImpl:137 - HHH000006: Autocommit mode: true
07:27:10,681  INFO DriverManagerConnectionProviderImpl:151 - HHH000401: using driver [org.hsqldb.jdbcDriver] at URL [jdbc:hsqldb:.]
07:27:10,681  INFO DriverManagerConnectionProviderImpl:156 - HHH000046: Connection properties: {user=sa, password=****, autocommit=true, release_mode=auto}
07:27:10,907  INFO Dialect:128 - HHH000400: Using dialect: org.hibernate.dialect.HSQLDialect
07:27:10,909  INFO LobCreatorBuilder:94 - HHH000423: Disabling contextual LOB creation as JDBC driver reported JDBC version [3] less than 4
07:27:10,910  INFO TransactionFactoryInitiator:73 - HHH000268: Transaction strategy: org.hibernate.engine.transaction.internal.jdbc.JdbcTransactionFactory
07:27:10,910  INFO ASTQueryTranslatorFactory:48 - HHH000397: Using ASTQueryTranslatorFactory
07:27:10,924  WARN ConfigContext:301 - HSEARCH000075: Configuration setting hibernate.search.lucene_version was not specified, using LUCENE_CURRENT.
07:27:10,947  INFO SchemaExport:343 - HHH000227: Running hbm2ddl schema export
07:27:10,948 DEBUG SchemaExport:353 - Import file not found: /import.sql
07:27:10,948 DEBUG SQL:104 - alter table BEE drop constraint FK100622C0E7E16
07:27:10,950 ERROR SchemaExport:425 - HHH000389: Unsuccessful: alter table BEE drop constraint FK100622C0E7E16
07:27:10,950 ERROR SchemaExport:426 - Table not found: BEE in statement [alter table BEE]
07:27:10,950 DEBUG SQL:104 - drop table BEE if exists
07:27:10,951 DEBUG SQL:104 - drop table HONEY if exists
07:27:10,951 DEBUG SQL:104 - create table BEE (id integer generated by default as identity (start with 1), city varchar(255), street varchar(255), myEnum varchar(255), nameOfBee varchar(255), honey_id integer not null, primary key (id))
07:27:10,953 DEBUG SQL:104 - create table HONEY (honey_id integer generated by default as identity (start with 1), NAME_OF_HONEY varchar(255), taste varchar(255), primary key (honey_id))
07:27:10,953 DEBUG SQL:104 - alter table BEE add constraint FK100622C0E7E16 foreign key (honey_id) references HONEY
07:27:10,956  INFO SchemaExport:405 - HHH000230: Schema export complete
07:27:11,190 DEBUG SQL:104 - insert into HONEY (honey_id, NAME_OF_HONEY, taste) values (null, ?, ?)
07:27:11,191  WARN SqlExceptionHelper:143 - SQL Error: -20, SQLState: IM001
07:27:11,191 ERROR SqlExceptionHelper:144 - This function is not supported
Exception in thread "main" javax.persistence.PersistenceException: org.hibernate.exception.GenericJDBCException: could not prepare statement
    at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1387)
    at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1310)
    at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1316)
    at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:881)
    at ua.hibernate_project.TestWork.main(TestWork.java:88)
Caused by: org.hibernate.exception.GenericJDBCException: could not prepare statement
    at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:54)
    at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:125)
    at org.hibernate.engine.jdbc.internal.StatementPreparerImpl$StatementPreparationTemplate.prepareStatement(StatementPreparerImpl.java:188)
    at org.hibernate.engine.jdbc.internal.StatementPreparerImpl.prepareStatement(StatementPreparerImpl.java:117)
    at org.hibernate.id.insert.AbstractSelectingDelegate.performInsert(AbstractSelectingDelegate.java:55)
    at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2966)
    at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3477)
    at org.hibernate.action.internal.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:81)
    at org.hibernate.engine.spi.ActionQueue.execute(ActionQueue.java:362)
    at org.hibernate.engine.spi.ActionQueue.addResolvedEntityInsertAction(ActionQueue.java:203)
    at org.hibernate.engine.spi.ActionQueue.addInsertAction(ActionQueue.java:183)
    at org.hibernate.engine.spi.ActionQueue.addAction(ActionQueue.java:167)
    at org.hibernate.event.internal.AbstractSaveEventListener.addInsertAction(AbstractSaveEventListener.java:321)
    at org.hibernate.event.internal.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:286)
    at org.hibernate.event.internal.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:192)
    at org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:125)
    at org.hibernate.ejb.event.EJB3PersistEventListener.saveWithGeneratedId(EJB3PersistEventListener.java:78)
    at org.hibernate.event.internal.DefaultPersistEventListener.entityIsTransient(DefaultPersistEventListener.java:208)
    at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:151)
    at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:78)
    at org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:852)
    at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:826)
    at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:830)
    at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:875)
    ... 1 more
Caused by: java.sql.SQLException: This function is not supported
    at org.hsqldb.jdbc.Util.sqlException(Unknown Source)
    at org.hsqldb.jdbc.Util.notSupported(Unknown Source)
    at org.hsqldb.jdbc.jdbcConnection.prepareStatement(Unknown Source)
    at org.hibernate.engine.jdbc.internal.StatementPreparerImpl$2.doPrepare(StatementPreparerImpl.java:119)
    at org.hibernate.engine.jdbc.internal.StatementPreparerImpl$StatementPreparationTemplate.prepareStatement(StatementPreparerImpl.java:182)
    ... 22 more
当我尝试使用实体管理器时(通过HibernateAPI,一切正常)

我可以看到实体管理器尝试插入id,即honey_id

DEBUG SQL:104 - insert into HONEY (honey_id, NAME_OF_HONEY, taste) values (null, ?, ?)
通过HibernateAPI,我看到了以下内容

DEBUG SQL:104 - insert into HONEY (NAME_OF_HONEY, taste) values (?, ?)
我的课

蜜蜂:

亲爱的:

@Table(name = "HONEY")
@Entity
public class Honey {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "honey_id")
private int id;

@Column(name = "NAME_OF_HONEY")
private String nameOfHoney;

private String taste;

@OneToMany(fetch = FetchType.LAZY, cascade = { CascadeType.ALL }, mappedBy = "honey" )

private Set<Bee> bees;
测试工作:

public class TestWork {

private static SessionFactory sessionFactory;
private static EntityManagerFactory emf;
private Session session;

static{
    Configuration configuration = new Configuration();
    configuration.configure("./hibernate.cfg.xml");
    ServiceRegistryBuilder serviceRegistryBuilder = 
            new ServiceRegistryBuilder().applySettings(configuration.getProperties());
    sessionFactory = configuration.buildSessionFactory(serviceRegistryBuilder.buildServiceRegistry());
    emf = Persistence.createEntityManagerFactory("hibernate-search-example");
}

public Session openSessionAndGetTransaction(){

    session = sessionFactory.openSession();
    session.getTransaction().begin();

    return session; 
}

public static EntityManager getEntityManager(){
    return emf.createEntityManager();
}

public void commitAndCloseSession(){
    session.getTransaction().commit();
    session.close();    
}


public static void main(String[] args) {

    TestWork testWork = new TestWork();

    EntityManager em = TestWork.getEntityManager();
    EntityTransaction tx =  em.getTransaction();
    tx.begin();
    Address address = new Address("Dnipro", "K.Marksa");
    Honey honeyFromForest = new Honey("FirstHoney","Very tasty");

    Bee firstBee = new Bee();
    firstBee.setAddress(address);
    firstBee.setNameOfBee("I'm first Bee");
    firstBee.setHoney(honeyFromForest);

    Bee secondBee = new Bee();  
    secondBee.setAddress(address);
    secondBee.setNameOfBee("I'm second Bee");   
    secondBee.setHoney(honeyFromForest);

    Set<Bee> bees = new HashSet<Bee>();
    bees.add(firstBee);
    bees.add(secondBee);        
    honeyFromForest.setBees(bees);

    em.persist(honeyFromForest);
    em.persist(firstBee);
    em.persist(secondBee);      
}
公共类测试工作{
私有静态SessionFactory SessionFactory;
私有静态实体管理器工厂emf;
非公开会议;
静止的{
配置=新配置();
configure(“./hibernate.cfg.xml”);
ServiceRegistryBuilder ServiceRegistryBuilder=
新建ServiceRegistryBuilder().applySettings(configuration.getProperties());
sessionFactory=configuration.buildSessionFactory(serviceRegistryBuilder.buildServiceRegistry());
emf=Persistence.createEntityManagerFactory(“hibernate搜索示例”);
}
公开会话openSessionAndGetTransaction(){
session=sessionFactory.openSession();
session.getTransaction().begin();
返回会议;
}
公共静态EntityManager getEntityManager(){
返回emf.createEntityManager();
}
公共无效提交关闭会话(){
session.getTransaction().commit();
session.close();
}
公共静态void main(字符串[]args){
TestWork TestWork=新的TestWork();
EntityManager em=TestWork.getEntityManager();
EntityTransaction tx=em.getTransaction();
tx.begin();
地址=新地址(“Dnipro”、“K.Marksa”);
Honey honeyFromForest=新蜂蜜(“第一蜂蜜”,“非常美味”);
第一只蜜蜂=新蜜蜂();
firstBee.setAddress(地址);
firstBee.setNameOfBee(“我是第一只蜜蜂”);
firstBee.setHoney(来自森林的蜜蜂);
第二只蜜蜂=新蜜蜂();
secondBee.setAddress(地址);
secondBee.setNameOfBee(“我是第二只蜜蜂”);
第二只蜜蜂。长蜜(来自森林的蜜蜂);
Set=newhashset();
添加(firstBee);
添加(第二个蜜蜂);
来自森林的蜜蜂。受挫者(蜜蜂);
em.persist(蜜源林);
em.persist(firstBee);
em.persist(secondBee);
}

谢谢你的帮助!

快速检查:你有正确的方言设置,对吗?Gimby,项目通过Hibernate API运行良好,所以我想我有很好的方言设置。谢谢你!@AndrewValevskiy查看你的堆栈trance,它显示HHH000206:Hibernate.properties找不到,这意味着你弄乱了Hibernate属性。谢谢你,Krishna,但是t当我通过HibernateAPI工作时,也使用了相同的字符串。您能告诉我在项目中应该更改什么来修复此异常吗?
@Embeddable
public class Address {

public Address() {}
public class TestWork {

private static SessionFactory sessionFactory;
private static EntityManagerFactory emf;
private Session session;

static{
    Configuration configuration = new Configuration();
    configuration.configure("./hibernate.cfg.xml");
    ServiceRegistryBuilder serviceRegistryBuilder = 
            new ServiceRegistryBuilder().applySettings(configuration.getProperties());
    sessionFactory = configuration.buildSessionFactory(serviceRegistryBuilder.buildServiceRegistry());
    emf = Persistence.createEntityManagerFactory("hibernate-search-example");
}

public Session openSessionAndGetTransaction(){

    session = sessionFactory.openSession();
    session.getTransaction().begin();

    return session; 
}

public static EntityManager getEntityManager(){
    return emf.createEntityManager();
}

public void commitAndCloseSession(){
    session.getTransaction().commit();
    session.close();    
}


public static void main(String[] args) {

    TestWork testWork = new TestWork();

    EntityManager em = TestWork.getEntityManager();
    EntityTransaction tx =  em.getTransaction();
    tx.begin();
    Address address = new Address("Dnipro", "K.Marksa");
    Honey honeyFromForest = new Honey("FirstHoney","Very tasty");

    Bee firstBee = new Bee();
    firstBee.setAddress(address);
    firstBee.setNameOfBee("I'm first Bee");
    firstBee.setHoney(honeyFromForest);

    Bee secondBee = new Bee();  
    secondBee.setAddress(address);
    secondBee.setNameOfBee("I'm second Bee");   
    secondBee.setHoney(honeyFromForest);

    Set<Bee> bees = new HashSet<Bee>();
    bees.add(firstBee);
    bees.add(secondBee);        
    honeyFromForest.setBees(bees);

    em.persist(honeyFromForest);
    em.persist(firstBee);
    em.persist(secondBee);      
}