Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.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_Mysql_Spring_Hibernate - Fatal编程技术网

Java 如何从一个表中获取数据&;使用hibernate映射插入到另一个

Java 如何从一个表中获取数据&;使用hibernate映射插入到另一个,java,mysql,spring,hibernate,Java,Mysql,Spring,Hibernate,我正在使用Struts-Spring和Hibernate集成mysql和EclipseKepler进行在线考试项目。 在registration.jsp页面中提交值时,我试图将这些值存储在同一数据库中的两个不同表(user_details,address)中。我可以将它们存储在DB中,但无法获取用户id,这是地址表的外键。user\u id是user\u details表中的主键。除address表中的user\u id外,所有其他字段都用正确的值填充。我想在地址表中使用它。但我不能那样做。我已

我正在使用Struts-Spring和Hibernate集成mysql和EclipseKepler进行在线考试项目。 在registration.jsp页面中提交值时,我试图将这些值存储在同一数据库中的两个不同表(user_details,address)中。我可以将它们存储在DB中,但无法获取用户id,这是地址表的外键。user\u id是user\u details表中的主键。除address表中的user\u 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>

我想我在hibernate映射部分遗漏了一些东西,因为我可以存储除user_id之外的其他地址表值。如果有人对完整的代码感兴趣,你对这个问题有什么想法吗@Sjuan76我需要你的帮助,先生@Andrea Ligios您确定您的
UserAddress
类可以扩展
UserDetails
?因为你也有一个封装…我的意思是你想要一个关联而不是封装。这就是我对事情的看法……是的,没关系。即使我删除了它,同样的事情也会发生@setila另一个想法是,当使用mySQL auto-increment时,它需要使用“identity”生成器,有时会因为不这样做而发生错误。所以我想问你:数据库中的表是否为两个主键都附加了自动递增属性?
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
public class UserAddress {

@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