我有2张表:User表{id,username,password}表示用户登录名和密码
employee表{id,emp_name,sex}表示员工名和性别
要求:登录名和员工名一一对应,并且我将user保存到session中后,能够通过#session.user.employee.emp_name直接在页面上取到员工名。
最好能写个例子出来,thanks!

解决方案 »

  1.   

    这样设计可以不?class User{
        private int id;
        private String userName;
        private String password;
    }class Employee extends User{
        private String sex;
    }
    这样就可以保存你想要的信息,而且还具有一定的拓展性,你可以添加任意你要的其他的用户角色
      

  2.   

    我只是举这个例子问一对一映射是怎么实现的,我在网上找了个例子,但看不懂它是怎么实现映射的。而且如果我的employee类里面全部是私有属性,那么通过我的那种取法能取到emp_name吗?对不起怪我没说清楚哈!
      

  3.   

    这是我从网上找到的例子,有哪位大侠能给我解释下它是怎么实现一对一映射的?或者说是根据哪个字段来映射的1、Person的POJO类:
    1public class Person {
    2
    3    private int id;
    4    
    5    private String name;
    6    
    7    private IdCard idCard; 
    8//省略setter、getter方法
    9}2、IdCard的POJO类:
    1public class IdCard {
    2    
    3    private int id;
    4    
    5    private String cardNo;
    6    
    7    private Person person;
    8//省略setter、getter方法
    9}3、Person的映射文件Person.hbm.xml
     1<?xml version="1.0"?>
     2<!DOCTYPE hibernate-mapping PUBLIC 
     3    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
     4    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
     5<hibernate-mapping>
     6    <class name="org.apple.hibernate.Person" table="t_person">
     7        <id name="id">
     8            <generator class="native"/>
     9        </id>
    10        <property name="name"/>
    11        <many-to-one name="idCard" unique="true"/>
    12    </class>
    13</hibernate-mapping>
    4、IdCard的映射文件IdCard.hbm.xml
     1<?xml version="1.0"?>
     2<!DOCTYPE hibernate-mapping PUBLIC 
     3    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
     4    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
     5<hibernate-mapping>
     6    <class name="org.apple.hibernate.IdCard" table="t_idcard">
     7        <id name="id">
     8            <generator class="native"/>
     9        </id>
    10        <property name="cardNo"/>
    11        <one-to-one name="person" property-ref="idCard"/>
    12    </class>
    13</hibernate-mapping>
      

  4.   

    这样好看很多1、Person的POJO类:
    public class Person {    private int id;
        
        private String name;
        
        private IdCard idCard; 
    //省略setter、getter方法
    }2、IdCard的POJO类:
    public class IdCard {
        
        private int id;
        
        private String cardNo;
        
        private Person person;
    //省略setter、getter方法
    }3、Person的映射文件Person.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">
     <hibernate-mapping>
         <class name="org.apple.hibernate.Person" table="t_person">
             <id name="id">
                 <generator class="native"/>
             </id>
            <property name="name"/>
            <many-to-one name="idCard" unique="true"/>
        </class>
    </hibernate-mapping>4、IdCard的映射文件IdCard.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">
     <hibernate-mapping>
         <class name="org.apple.hibernate.IdCard" table="t_idcard">
             <id name="id">
                 <generator class="native"/>
             </id>
            <property name="cardNo"/>
            <one-to-one name="person" property-ref="idCard"/>
        </class>
    </hibernate-mapping>
      

  5.   

    User表id为主键,employee表的ID也为主键,但employee.id引用user.id,形成一一对应,也就是只有user表中有的员工,employee表中的才有,本人是这样理解的,
      

  6.   

    但是这两个主键都是自动生成的啊,如何判断employee表中的员工是user表中的员工呢?通过employee.id=user.id?
      

  7.   

    public class User{
       private int id;
       private String userName;
       private String password;
       private Employee emplyoee; //省略getXX setXX
    }
    User表中加入一个Emplyee的外键,2个对象关联起来就OK了
      

  8.   


    package coffeeJavaW.domain;/**
     * 用户类
     * @author coffeeJavaW
     *
     */
    public class User { private String id;

    private String username;

    private String password;

    private Employee emp; public Employee getEmp() {
    return emp;
    } public void setEmp(Employee emp) {
    this.emp = emp;
    } public String getId() {
    return id;
    } public void setId(String id) {
    this.id = id;
    } public String getUsername() {
    return username;
    } public void setUsername(String username) {
    this.username = username;
    } public String getPassword() {
    return password;
    } public void setPassword(String password) {
    this.password = password;
    }
    }
    package coffeeJavaW.domain;/**
     * 员工
     * @author coffeeJavaW
     *
     */
    public class Employee { private String id;

    private String empName;

    private String sex; public String getId() {
    return id;
    } public void setId(String id) {
    this.id = id;
    } public String getEmpName() {
    return empName;
    } public void setEmpName(String empName) {
    this.empName = empName;
    } public String getSex() {
    return sex;
    } public void setSex(String sex) {
    this.sex = sex;
    }
    }
    coffeeJavaW.domain.User.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">
    <hibernate-mapping package="coffeeJavaW.domain">
    <class name="User" table="t_user">
    <id name="id">
    <generator class="uuid"/>
    </id>
    <property name="username" column="username"/>
    <property name="password" column="password"/>
      
       <many-to-one name="emp" column="empId" unique="true"/>
    </class>
    </hibernate-mapping>Employee.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">
    <hibernate-mapping package="coffeeJavaW.domain">
    <class name="Employee" table="t_emp">
    <id name="id">
    <generator class="uuid"/>
    </id>
    <property name="empName" column="empName"/>
    <property name="sex" column="sex"/>
      
    </class>
    </hibernate-mapping>
      

  9.   

    #8楼我的回复貌似贴错了下面更正package coffeeJavaW.domain;/**
     * 员工
     * @author coffeeJavaW
     *
     */
    public class Employee { private String id;

    private String empName;

    private String sex;

    public String getId() {
    return id;
    } public void setId(String id) {
    this.id = id;
    } public String getEmpName() {
    return empName;
    } public void setEmpName(String empName) {
    this.empName = empName;
    } public String getSex() {
    return sex;
    } public void setSex(String sex) {
    this.sex = sex;
    }
    }
    package coffeeJavaW.domain;/**
     * 用户类
     * @author coffeeJavaW
     *
     */
    public class User { private String id;

    private String username;

    private String password;

    private Employee emp; public Employee getEmp() {
    return emp;
    } public void setEmp(Employee emp) {
    this.emp = emp;
    } public String getId() {
    return id;
    } public void setId(String id) {
    this.id = id;
    } public String getUsername() {
    return username;
    } public void setUsername(String username) {
    this.username = username;
    } public String getPassword() {
    return password;
    } public void setPassword(String password) {
    this.password = password;
    }
    }User.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">
    <hibernate-mapping package="coffeeJavaW.domain">
    <class name="User" table="t_user">
    <id name="id">
    <generator class="foreign">
    <param name="property">emp</param>
    </generator>
    </id>
    <property name="username" column="username"/>
    <property name="password" column="password"/>
      
       <one-to-one name="emp" constrained="true"/>
    </class>
    </hibernate-mapping>Employee.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">
    <hibernate-mapping package="coffeeJavaW.domain">
    <class name="Employee" table="t_emp">
    <id name="id">
    <generator class="uuid"/>
    </id>
    <property name="empName" column="empName"/>
    <property name="sex" column="sex"/>

    </class>
    </hibernate-mapping>以上是一对一单项关联的关系