繁体   English   中英

休眠无法生成ID

[英]Hibernate can't generate id

我已经在我的IntelliJ IDEA上创建了一个新项目,使用的是hibernate(+休眠实体管理器)5,hsqldb 1.8(仅用于测试)以及junit 4。

我有考试课

UserRoundRelationsTest

EntityManagerFactory emf;
EntityManager em;

Date currentDate;
User user;
Round round1;
Round round2;

还有一些@After和@Before方法:

@Before
public void saveDummyUserAndTwoDummyRounds() {

    emf = Persistence.createEntityManagerFactory("testPersistence");
    em = emf.createEntityManager(); // Retrieve an application managed entity manager

    currentDate = new Date();
    user = new User.UserBuilder("alias").fullName("Full Name").phoneNumber("Phone Number").height(100).weight(100).birthDate(currentDate).build();

    round1 = new Round(new GameMode(1, ButtonTargetStrategy.RANDOM, ButtonSkipStrategy.SKIP_ON_MISTAKE));
    round2 = new Round(new GameMode(2, ButtonTargetStrategy.RANDOM, ButtonSkipStrategy.SKIP_ON_MISTAKE));

    round1.setUser(user);
    round2.setUser(user);

    HashSet<Round> rounds = new HashSet<Round>(2);
    rounds.add(round1);
    rounds.add(round2);

    em.getTransaction().begin();

    user.setRounds(rounds);

    em.persist(user);
    em.persist(round1);
    em.persist(round2);

    em.flush();
    em.getTransaction().commit();
}

@After
public void deleteData() {

    em.remove(user);
    em.remove(round2);
    em.remove(round2);

    em.getTransaction().commit();

    em.close();
    emf.close();
}

首先,当我尝试运行测试时,hibernate找不到User和Round类的表以及它们所依赖的所有内容(例如,一个名为ButtonPress的类)。 我认为发生这种情况是由于我在persistence.xml中配置了自动创建-放置

<persistence-unit name="testPersistence">
    <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>

    <class>com.carloworks.model.User</class>
    <class>com.carloworks.model.Round</class>
    <class>com.carloworks.model.ButtonPress</class>
    <properties>
        <!--<property name="hibernate.archive.autodetection" value="class,hbm"></property>-->

        <property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect"></property>
        <property name="hibernate.show_sql" value="true"></property>
        <property name="hibernate.connection.driver_class" value="org.hsqldb.jdbcDriver"></property>
        <property name="hibernate.connection.username" value="sa"></property>
        <property name="hibernate.connection.password" value=""></property>
        <property name="hibernate.connection.url"
                  value="jdbc:hsqldb:mem:buttonMasherModelsTestDb;MV_STORE=FALSE;MVCC=FALSE"></property>
        <!--<property name="hibernate.default_schema" value="buttonMasherModelsTestDb"/>-->
        <property name="hibernate.hbm2ddl.auto" value="create-drop"></property>
    </properties>
</persistence-unit>

向下滚动到错误日志,在这一行我也遇到错误:

em.persist(user);

空标识符(加上“不支持此功能” /“ GenericJDBCException:无法准备声明”)。

我做错了什么?

该项目也在Github上可用

完整错误日志

将版本更改为最新版本可以解决此问题*有些可能会遇到路径错误(由Maven引起)。 如果您使用的是intelliJ,请导航至“项目设置”->“模块”,然后修复“问题”选项卡下的所有问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM