Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.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 Hibernate中的联接列错误(一对多)_Java_Xml_Hibernate_Jakarta Ee_Hibernate Mapping - Fatal编程技术网

Java Hibernate中的联接列错误(一对多)

Java Hibernate中的联接列错误(一对多),java,xml,hibernate,jakarta-ee,hibernate-mapping,Java,Xml,Hibernate,Jakarta Ee,Hibernate Mapping,使用Hibernate时,我遇到了以下问题: 错误不断地告诉我,我有一个错误的实体。有人能不能仔细看看这个问题,因为我不知道出了什么问题 我已将RevalMeasurements.hbm.xml和rewasser.hbm.xml添加到hibernate中。 RevalMeasurement.hbm.xml java 在配置文件中添加了/hibernate/RevalMeasurement.hbm.xml,但文件名为RevalMeasurements.hbm.xml。请更正配置文件中的文件名。 另

使用Hibernate时,我遇到了以下问题: 错误不断地告诉我,我有一个错误的实体。有人能不能仔细看看这个问题,因为我不知道出了什么问题

我已将RevalMeasurements.hbm.xml和rewasser.hbm.xml添加到hibernate中。

RevalMeasurement.hbm.xml

java


在配置文件中添加了
/hibernate/RevalMeasurement.hbm.xml
,但文件名为
RevalMeasurements.hbm.xml
。请更正配置文件中的文件名。 另外,请在映射文件中提到XSD

<!DOCTYPE hibernate-mapping PUBLIC
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">


发现问题:在我的rewasser.hbm.xml中,我键入了
而不是

您是否在hibernate映射xml文件中映射了revalMeasurements实体?通常我会在上面包含hibernate.xml。很抱歉,这是我的错误,我在创建此问题时输入了一个错误。在我的项目中,配置文件中的名称和文件本身都是正确的。不,不完全是这样,就像我说的:我工作的项目的名称是正确的,我只是在这个线程中键入了错误的文件名。请在两个hbm文件中验证您的关系标记。
<hibernate-mapping>
    <class name="be.uhasselt.MediQ.model.RevalUser" table="reval_users">
    <meta attribute="class-description">
        This class contains the user details.
    </meta>
        <id name="userId" type="java.lang.Long">
            <column name="user_id" />
            <generator class="identity" />
        </id>
        <property name="userName" type="string">
            <column name="user_name" length="30" not-null="true"/>
        </property>
        <property name="userLastName" type="string">
            <column name="user_lastname" length="30" not-null="true"/>
        </property>
        <property name="userSpeed" type="double">
            <column name="user_speed" not-null="true" />
        </property>
        <set name="revalMeasurements" table="reval_measurements" inverse="true" lazy="true" fetch="select">
            <key>
                <column name="user_id" not-null="true" />
            </key>
            <one-to-many class="be.uhasselt.MediQ.model.RevalMeasurements" />
        </set>
    </class>
</hibernate-mapping>
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
    http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">

    <!-- Hibernate session factory -->
    <bean id="sessionFactory"
        class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">

        <property name="dataSource">
            <ref bean="dataSource" />
        </property>

        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
                <prop key="hibernate.show_sql">true</prop>
            </props>
        </property>

        <property name="mappingResources">
            <list>
                <value>/hibernate/User.hbm.xml</value>
                <value>/hibernate/Measurement.hbm.xml</value>
                <value>/hibernate/PressureMeasurement.hbm.xml</value>
                <value>/hibernate/KlavUser.hbm.xml</value>
                <value>/hibernate/SneezeFeed.hbm.xml</value>
                <value>/hibernate/SneezeChannel.hbm.xml</value>
                <value>/hibernate/RevalUser.hbm.xml</value>
                <value>/hibernate/RevalMeasurement.hbm.xml</value>
            </list>
        </property>
    </bean>

    <tx:annotation-driven />
    <bean id="transactionManager"
        class="org.springframework.orm.hibernate5.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory" />
    </bean>

</beans>  
import java.util.Date;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

import org.jsondoc.core.annotation.ApiObject;
import org.jsondoc.core.annotation.ApiObjectField;

@Entity
@ApiObject
public class RevalMeasurement {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @ApiObjectField(description = "The measurements ID")
    private Long measurementId;

    @ApiObjectField(description = "The time of the measurements")
    private Date createdAt;

    @ApiObjectField(description = "The measurements user")
    private RevalUser revalUser;

    public RevalMeasurement() {

    }

    public RevalMeasurement(Long measurementId, Date createdAt, RevalUser revalUser) {
        this.measurementId = measurementId;
        this.createdAt = createdAt;
        this.revalUser = revalUser;
    }

    public Long getMeasurementId() {
        return measurementId;
    }

    public void setMeasurementId(Long measurementId) {
        this.measurementId = measurementId;
    }

    public Date getCreatedAt() {
        return createdAt;
    }

    public void setCreatedAt(Date createdAt) {
        this.createdAt = createdAt;
    }

    public RevalUser getRevalUser() {
        return revalUser;
    }

    public void setRevalUser(RevalUser revalUser) {
        this.revalUser = revalUser;
    }
}
import java.util.Set;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

import org.jsondoc.core.annotation.ApiObject;
import org.jsondoc.core.annotation.ApiObjectField;

@Entity
@ApiObject
public class RevalUser {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @ApiObjectField(description = "The users ID")
    private Long userId;

    @ApiObjectField(description = "The users name")
    private String userName;

    @ApiObjectField(description = "The users last name")
    private String userLastName;

    @ApiObjectField(description = "The users speed")
    private Double userSpeed;

    @ApiObjectField(description = "The users measurements")
    private Set<RevalMeasurement> revalMeasurements;

    public Long getUserId() {
        return userId;
    }

    public void setUserId(Long userId) {
        this.userId = userId;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getUserLastName() {
        return userLastName;
    }

    public void setUserLastName(String userLastName) {
        this.userLastName = userLastName;
    }

    public Double getUserSpeed() {
        return userSpeed;
    }

    public void setUserSpeed(Double userSpeed) {
        this.userSpeed = userSpeed;
    }

    public Set<RevalMeasurement> getRevalMeasurements() {
        return revalMeasurements;
    }

    public void setRevalMeasurements(Set<RevalMeasurement> revalMeasurements) {
        this.revalMeasurements = revalMeasurements;
    }
}
Caused by: org.hibernate.boot.MappingException: Association [be.uhasselt.MediQ.model.RevalUser.revalMeasurements] references an unmapped entity [be.uhasselt.MediQ.model.RevalUser.revalMeasurements] : origin(null)
    at org.hibernate.boot.model.source.internal.hbm.ModelBinder$AbstractPluralAttributeSecondPass.bindCollectionTable(ModelBinder.java:3137)
    at org.hibernate.boot.model.source.internal.hbm.ModelBinder$AbstractPluralAttributeSecondPass.doSecondPass(ModelBinder.java:3075)
    at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.processSecondPasses(InFlightMetadataCollectorImpl.java:1655)
    at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.processSecondPasses(InFlightMetadataCollectorImpl.java:1623)
    at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:278)
    at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.build(MetadataBuildingProcess.java:83)
    at org.hibernate.boot.internal.MetadataBuilderImpl.build(MetadataBuilderImpl.java:418)
    at org.hibernate.boot.internal.MetadataBuilderImpl.build(MetadataBuilderImpl.java:87)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:692)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:724)
    at org.springframework.orm.hibernate5.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:416)
    at org.springframework.orm.hibernate5.LocalSessionFactoryBean.afterPropertiesSet(LocalSessionFactoryBean.java:401)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1637)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1574)
    ... 32 more
<!DOCTYPE hibernate-mapping PUBLIC
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">