比如有以下两个类关联
public class Person {
int id ;
String name;
Set cards = new HashSet(0);

public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public Set getCards() {
return cards;
}

public void setCards(Set cards) {
this.cards = cards;
}
}public class Card {
private int id;
private String card;
private Person person;

public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}

public String getCard() {
return card;
}

public void setCard(String card) {
this.card = card;
}

public Person getPerson() {
return person;
}

public void setPerson(Person person) {
this.person = person;
}
}
这时,我要从页面添加一张卡。。
页面上就一个文本输入框是输入卡号的还有一个下拉列表,下拉列表里面是某个人。。输入卡号然后选中将卡号添加到谁下面。。再点添加。。这时传到action里面后,Card card对象的card字段和card.person对象的id字段有值,这样好像不能插入到数据库吧?难到我又要拿着person的id属性从数据库把人查出来,然后再设置到card对象里面去吗?这样是可以,但是好麻烦,有没有办法解决呢?

解决方案 »

  1.   

    人和卡是一对多关系把
    你是想把添加一个卡号和对应的人根据person的ID load出person,
    在new一个Card的,将person属性设置为load出来的Person对象!
    之后保存card
      

  2.   

    只有这种办法吗?还有别的办法没?用sql语句的话只要放一个ID,用hibernate还得这样设。。哎。
      

  3.   


    sql是关系型的hibernate是面向对象型的 所以要用面向对象的思想去思考问题!
      

  4.   

    只能这样,hibernate可以把实体关联,查询简单点
      

  5.   

    Person p = new Person();
    p.setId(pid);
    card.setPerson(p);
    session.save(card);
      

  6.   

    只能这样先根据person.id查询出这个Person对象,然后调用card.setPerson()设置,最后保存card对象。因为Hibernate适合做保存、跟新之类的工作,不适合做大量查询之类的工作。你可以用ibatis,这样就可以自己写sql语句了。
      

  7.   

    LZ的头像是动的,而且是jpg格式的,why?how?