日期:2014-05-17  浏览次数:20731 次

hibernate 注解 一对一 怎么写
有A B两张表
表A字段:
id  name  bid(外键)
表B字段:
id  name

实体类

@Eneity
public class A {

  @Id
  @GeneratedValue
  private int id;
  private Sreing name;
  
  @OneToOne       //这里该怎么写
  private int bid;

  //setter  getter......
}

@Eneity
public class B {

  @Id
  @GeneratedValue      //这里要写什么?
  private int id;
  private Sreing name;

  //setter  getter......
}


最后hql怎么写 才能使
select * from A
 
这样的  返回的list里面 有B的name

------解决方案--------------------
楼主A的实体类写错了

@Eneity
public class A {
 
  @Id
  @GeneratedValue
  private int id;
  private Sreing name;
   
  @OneToOne       //这里该怎么写
  private B b;
 
  //setter  getter......
}

这样查询出来的A中就有B的name了  list.get(i).getB().getName();
------解决方案--------------------
hibernate推荐用双向多对一来实现一对一
------解决方案--------------------


@Entity
public class A {
//最好还是把这些注解写在getter上
  @Id
  @GeneratedValue
  private int id;
  private String name;
  private int bid;
  @OneToOne
  @JoinColumn(name="bid",insertable=false,updatable=false)
  private B b;

  //setter  getter......
}

@Eneity
public class B {
//最好还是把这些注解写在getter上
  @Id
  @GeneratedValue    
  private int id;
  private String name;
  @OneToOne(mappedBy="b")//双向一对一关联以A类的b属性配置来进行关联
  private A a;
  //setter  getter......
}


------解决方案--------------------
不会的可以看这个 hibernate注解文档http://docs.jboss.org/hibernate/annotations/3.4/reference/zh_cn/html_single/