0

我正在开发一个使用休眠框架的 Java JSP Web 应用程序。

我是 JSP/hibernate 的初学者,我似乎无法让 hibernate 工作。我已按照本教程进行操作:https ://netbeans.org/kb/docs/web/hibernate-webapp.html 一切正常。我将 xampp 与 phpmyadmin 一起使用,我可以通过 hibernate.cfg.xml 文件执行 HQL 查询。

然后我对用于 Web 应用程序的数据库进行了同样的尝试。遵循所有步骤并完成所有向导。但我无法执行 HQL 查询。

给出以下错误:

org.hibernate.MappingException: An association from the table campingsperfestival refers to an unmapped class: festivalOverview.Campings
    at org.hibernate.cfg.Configuration.secondPassCompileForeignKeys(Configuration.java:1252)
    at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1170)
    at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:324)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1286)
    at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:859)

我遵循了数据库向导中的 Hibernate 映射文件和 POJO,它为数据库中的所有表生成了一个 .java 和 .hbm.xml 文件,除了一个表:“campingsperfestival”表。我再次完成了几次向导并重新开始,但它仍然没有为“campingsperfestival”表生成 .java 和 .hbm.xml 文件。

'campingsperfestival' 表是一个有 2 个 id 的表,它们都有一个外键。有些节日和露营都有 ID,“campingsperfestival”在一张桌子上匹配这 2 个 ID。

露营.hbm.xml:

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 20-apr-2013 12:04:37 by Hibernate Tools 3.2.1.GA -->
<hibernate-mapping>
    <class name="festivalOverview.Campings" table="campings" catalog="groep11_festivals">
        <id name="campId" type="java.lang.Integer">
            <column name="camp_id" />
            <generator class="identity" />
        </id>
        <property name="campAdres" type="string">
            <column name="camp_adres" not-null="true" />
        </property>
        <property name="campCap" type="int">
            <column name="camp_cap" not-null="true" />
        </property>
        <set name="festivalses" inverse="true" table="campingsperfestival">
            <key>
                <column name="camp_id" not-null="true" />
            </key>
            <many-to-many entity-name="festivalOverview.Festivals">
                <column name="fest_id" not-null="true" />
            </many-to-many>
        </set>
        <set name="facpercamps" inverse="true">
            <key>
                <column name="camp_id" not-null="true" />
            </key>
            <one-to-many class="festivalOverview.Facpercamp" />
        </set>
    </class>
</hibernate-mapping>

Festivals.hbm.xml:

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 20-apr-2013 12:04:37 by Hibernate Tools 3.2.1.GA -->
<hibernate-mapping>
    <class name="festivalOverview.Festivals" table="festivals" catalog="groep11_festivals">
        <id name="festId" type="java.lang.Integer">
            <column name="fest_id" />
            <generator class="identity" />
        </id>
        <property name="festNaam" type="string">
            <column name="fest_naam" length="100" not-null="true" />
        </property>
        <property name="festLocatie" type="string">
            <column name="fest_locatie" length="200" not-null="true" />
        </property>
        <property name="festDatum" type="date">
            <column name="fest_datum" length="10" not-null="true" />
        </property>
        <property name="festDuur" type="byte">
            <column name="fest_duur" not-null="true" />
        </property>
        <set name="ticketses" inverse="true">
            <key>
                <column name="fest_id" not-null="true" />
            </key>
            <one-to-many class="festivalOverview.Tickets" />
        </set>
        <set name="bandsperfestivals" inverse="true">
            <key>
                <column name="fest_id" not-null="true" />
            </key>
            <one-to-many class="festivalOverview.Bandsperfestival" />
        </set>
        <set name="campingses" inverse="false" table="campingsperfestival">
            <key>
                <column name="fest_id" not-null="true" />
            </key>
            <many-to-many entity-name="festivalOverview.Campings">
                <column name="camp_id" not-null="true" />
            </many-to-many>
        </set>
        <set name="tickettypesperfestivals" inverse="true">
            <key>
                <column name="fest_id" not-null="true" />
            </key>
            <one-to-many class="festivalOverview.Tickettypesperfestival" />
        </set>
    </class>
</hibernate-mapping>

我只是hibernate的初学者,真的不知道如何解决这个问题。任何帮助是极大的赞赏!

4

1 回答 1

1

我假设 campingsperfestival 是 Campings 和 Festival 这两个类之间的连接表?您是否定义了这两个类及其映射?

你那里的错误是说它不能创建campingsperfestival,因为它指的是露营,它没有被定义为休眠类。因此,请确保定义了 Campings 并且您的映射正确。

如果您仍然不清楚,如果您展示您为露营和节日准备的 java/mappings,我们可能会提供更多帮助。

顺便说一句,如果这是您正在进行的一个新项目,我真的建议您使用基于注释的休眠类。您可能还会发现自己创建 hibernate 实体类而不是使用 netbeasns 是一种更有成效的学习体验——但这取决于个人喜好。

于 2013-04-20T19:17:19.770 回答