请问该如何实现这样的功能

我想问一下,如何 让一个javabena 的属性自动生成?

 

  
public class From{

/**
 * 论坛的author信息表
 * 
 */
public class FormPerson {
    private int ID;

        /*这里的ObjectA 可能是 Student 可能是 Teacher*/
    private ObjectA objecta;

    private int count;


}
-------------------------------------------------------------

public class Teacher {

    private int ID;
    
    private String name;

    private String password;

    private String email;

    private String sex;

    private int active;

    private Set<Student> students;
}


----------------------------------------------------------
public class Student {

    private int ID;

    private String name;

    private String password;

    private String email;

    private String sex;
    
    private int active;
}
----------------------------------------------------------
/*抽取出来的论坛发贴人信息*/

public class ObjectA {

    private int ID;
    private String name;
    private String email;
    private String sex;
    
}





当ID> 20000的时候 ObjectA 为 Teacher
  ID<20000 ObjectA 为 student
  所有的ID都保持独立,


这是一个教学网站 ,有论坛功能
论坛的发贴人信息table,一部分来自stduent和teacher的共同属性
我不想做继承,
管理那里用了hibernate 已经完成了,论坛在用ibatis,我该怎么实现呢

可否告诉我是哪一种设计模式,我是一个菜鸟,。。。

 

teacher和student都集成ObjectA,

然后再FormPerson 中写一个静态方法:

static ObjectA createObjectA(int id)
{
if(id>20000){

return new Teacher(xxxxx,xx,xx);

}

if(id<20000)

return new Student(xxxxx,xx,xx);

}

干嘛要这样呢?

1.一个表示类型的属性不是很好么

2.如果硬是要分,那就应该是两个没什么关系的东西了,想有关系,也许可以选择用什么课程呀、班级呀等等这些东西把他们联系起来。

[quote="sunzixun"]当ID> 20000的时候 ObjectA 为 Teacher
ID<20000 ObjectA 为 student
所有的ID都保持独立, [/quote]
这个完全无法理解为什么要这么做。。。。。。。。。。。参考第一点。

这个就得你逻辑里去判断
当ID> 20000的时候 ObjectA 为 Teacher
ID<20000 ObjectA 为 student
在相应满足的条件下进行强制转换啊

我给你设计个逻辑

1.
[code="java"]
/**

  • 该方法用于 逻辑判断FormPerson 并最终形成sql语句返回
    */
    public String judgeRole(FormPerson person ){

           int id = person.getId();
           String sql = nul;
           if(id>20000){
             sql = " select * from Teacher where id = '"+id+"'";
           }
           if(id<20000)
              sql = " select * from student where id = '"+id+"'";
    

    return sql ;

    }

2.同上 如法泡制 。。。。。。。。。。。。。。
总之 最后的结果 是以返回 sql为主
因为你用到了ibatis

3.你这表结构设计得..... 不过你硬要这么做 也可以做出来。
在学校 多耍点算法也有好处。
加油。。。

[/code]

n你需要的是apache Commons里一个叫BeanUtils的组件,能把ObjectA里的匹配的属性的值复制到Teacher或Student里,不匹配的属性则不被复制。
参考的写法是

[code="java"]
if( objecta.id>20000)
BeanUtils.populate(objecta, teacher);
else
BeanUtils.populate(objecta, student);

[/code]