当前位置: 首页 > 知识库问答 >
问题:

无法在hibernate映射中加载数据

戚阳曜
2023-03-14

我正在使用Struts、Spring和Hibernate与mysql&Eclipse Kepler的集成进行在线考试项目。在Registration.jsp页面中提交值时,我试图将这些值存储在同一个数据库中的两个不同的表(user_details,address)中。我可以将它们存储在数据库中,但我不能获取user_id,这是地址表的外键。user_id是user_details表中的主键,除了地址表中的user_id外,其他字段都用正确的值填充。我正试着在地址表中使用它。但我不能那么做。我已经附上了我现在使用的代码,

user.hbm.xml

<hibernate-mapping>
    <class name="UserDetails" table="user_details">
        <id name="user_id" type="int" column="user_id" >
            <generator class="identity">

            </generator>
        </id>
        <property name="first_name" type="string">
            <column name="first_name"/>
        </property>
        <property name="last_name" type="string">
            <column name="last_name"/>
        </property>
        <property name="email" type="string">
            <column name="email"/>
        </property>
        <property name="password" type="string">
            <column name="password"/>
        </property>
        <property name="gender" type="string">
            <column name="gender"/>
        </property>
        <property name="dob" type="int">
            <column name="dob"/>
        </property>
        <property name="phone" type="int">
            <column name="phone"/>
        </property>
        <property name="experience" type="float">
            <column name="experience"/>
        </property>

         <set name="addr" table="address"  
                inverse="true" lazy="true" fetch="select" cascade = "save-update">
            <key>
                <column name="user_id" not-null="false"  />
            </key>
            <one-to-many class="UserAddress"  />
        </set>
    </class>
</hibernate-mapping>
<hibernate-mapping> 
    <class name="UserAddress" table="address">
        <id name="address_id" type="int" column="address_id">
            <generator class="identity"/>
        </id>
        <property name="addr_line1" type="string">
            <column name="addr_line_1"/>
        </property>
        <property name="addr_line2" type="string">
            <column name="addr_line_2"/>
        </property>
        <property name="addr_line3" type="string">
            <column name="addr_line_3"/>
        </property>
        <property name="city" type="string">
            <column name="city"/>
        </property>
        <property name="zipcode" type="int">
            <column name="zipcode"/>
        </property>
        <property name="state" type="string">
            <column name="state"/>
        </property>
        <property name="country" type="string">
            <column name="country"/>
        </property>

        <many-to-one name="user_detail" class="UserDetails" fetch="select">
        <column name="user_id" not-null="false"></column>
        </many-to-one>      
    </class>
</hibernate-mapping>
public class UserDetails {

    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    //@OneToMany (mappedBy="user_details", cascade = CascadeType.ALL)
    @OneToMany (cascade = { CascadeType.PERSIST, CascadeType.MERGE}, mappedBy="user_detail")
    public int user_id; //primary key
    private String first_name;
    private String last_name;
    private String email;
    private String password;
    private String gender;
    private int dob;
    private int phone;
    private float experience;
    private Set<UserAddress> addr;//set name

//getters and setters created
@Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    private int address_id; //primary key
    @ManyToOne(fetch=FetchType.EAGER, targetEntity=UserDetails.class)
    @JoinColumn(name="user_id")
    private UserDetails user_detail;
        private String addr_line1;
        private String addr_line2;
        private String addr_line3;
        private String city;
        private int zipcode;
        private String state;
        private String country;
        //getters and setters created

我想我在hibernate映射部分遗漏了一些东西,因为我可以存储除user_id以外的其他地址表值。如果有人有兴趣使用完整的代码,我准备给出。谢了。

共有1个答案

庾兴发
2023-03-14

StackTrace中的错误是什么?另外,您应该使用注释来映射列和属性。你把映射资源放在hibernate配置文件中了吗?

 类似资料:
  • 我使用Hibernate已经有一段时间了,而且非常成功。然而,我昨天遇到了一个问题,这里的答案将在将来节省大量调试时间。 我忘了在我的hibernate中添加hibernate映射。新实体的cfg。 当我试图加载这个实体时,我本以为会得到某种运行时异常,但它却什么也没加载,继续运行,好像一切都很好。 我正在使用以下代码加载实体。 我想一个错误,如果我尝试加载一个实体,没有映射在我的hibernat

  • 在web应用程序上,我们使用Spring 3.2和Hibernate 4.1.1,并实现了一个类似插件的架构。插件可以在运行时添加和删除。对于每个模块,我们定义了一个单独的类加载器,并在spring上创建了单独的子应用程序上下文。完整的配置是使用注释完成的,不再需要对beans进行XML配置。 Spring Hibernate配置类 现在的问题是:一些插件包含自己的实体(DAO)类,这些类在运行时

  • 我在Spring Boot和PostgreSql中有一个实体,我使用@Column注释映射到数据库。这是我的实体剪报代码: 当id运行和测试与邮递员,我得到一个错误: org.springframework.dao.InvalidDataAccessResourceUsageExc0019:无法提取ResultSet;SQL[n/a];嵌套异常是org.hibernate.exception.SQ

  • 我们必须在可选元素“mappedby”中指定什么。是特定模型的table_name还是classname? 哪个是正确的? 这个

  • 我正在使用Hibernate和JPA注释来映射我的类。当hibernate尝试映射这个类时,我遇到了一个问题 我的Social alStat类是: 我得到了这个错误: 我猜发生这种情况是因为我试图映射到一个基本类,但@ElementCollection注释不应该解决这个问题吗? 我的item类如下所示:

  • 我使用JPA2.1和Hibernate来实现。 举个示例: 我有一个父实体(称为父实体)和一个子实体(称为子实体)。 可嵌入唯一密钥: 父实体: 子实体: 对于一些关于Parent查询,我需要child,而对于某些情况,我不需要。 我试图通过uniqueKey获取数据,但没有调用getChild(),但它仍然在获取父级数据的同时获取子级数据。 在参考了这个答案之后。它说在@OneToOne的情况下