现在有两张表: region : regionId, regionName
               province: province, provinceName,regionId-FK
请问怎么用annotaion创建 Region 和 Province两个表?

解决方案 »

  1.   

    参考一下,里面Address(n)<-------------->User(1)
    http://blog.csdn.net/zealVampire/archive/2009/07/02/4316344.aspx
      

  2.   

    请问在User 里: @OneToMany(mappedBy="user") 这个user表示的是什么?
      

  3.   


    @Entity
    @Table(name="province")
    public class Province extends BaseObject implements Serializable{
    private static final long serialVersionUID = 3832626162173359411L;
    private String provinceId;
    private String provinceNameCN;
    private String provinceNameEN;
    private String regionId;
    @ManyToOne(fetch=FetchType.LAZY)  
    @JoinColumn(name="REGIONID")
    private Region region;

    public static long getSerialVersionUID() {
    return serialVersionUID;
    }
    public Region getRegion() {
    return region;
    }
    public void setRegion(Region region) {
    this.region = region;
    }
    public Province(){

    };
    public Province(final String provinceNameCN){

    }
    @Override
    public boolean equals(Object o) {
    // TODO Auto-generated method stub
    return false;
    } @Override
    public int hashCode() {
    // TODO Auto-generated method stub
    return 0;
    } @Override
    public String toString() {
    // TODO Auto-generated method stub
    return null;
    } @Id
    @Column(name="PROVINCEID")
    public String getProvinceId() {
    return provinceId;
    }
    @Column(name="PROVINCENAMECN", nullable=false,length=50)
    public String getProvinceNameCN() {
    return provinceNameCN;
    }
    @Column(name="PROVINCENAMEEN",nullable=false,length=50)
    public String getProvinceNameEN() {
    return provinceNameEN;
    }
     
    @Column(name="REGIONID",nullable=false,length=6)
    public String getRegionId() {
    return regionId;
    } public void setProvinceId(String provinceId) {
    this.provinceId = provinceId;
    } public void setProvinceNameCN(String provinceNameCN) {
    this.provinceNameCN = provinceNameCN;
    } public void setProvinceNameEN(String provinceNameEN) {
    this.provinceNameEN = provinceNameEN;
    } public void setRegionId(String regionId) {
    this.regionId = regionId;
    }}@Entity
    @Table(name="region")public class Region extends BaseObject implements Serializable{
    private static final long serialVersionUID = 3832626162173359411L;
    private String regionId;
    private String regionName;
    private Set<Province> province=new HashSet<Province>();
    /**
     * Default constructor - creates a new instance with no values set.
     */
    public Region(){

    }/**
     * Create a new instance and set the regionName.
     * @param regionName .
     */
    public Region(final String region){
    this.regionName=region;
    }@Id
    @Column(name="REGIONID")
    public String getRegionId() {
    return regionId;
    }
    @Column(name="REGIONNAME",nullable=false,length=20)
    public String getRegionName() {
    return regionName;
    }public void setRegionId(String regionId) {
    this.regionId = regionId;
    }
    public void setRegionName(String regionName) {
    this.regionName = regionName;
    }@OneToMany(mappedBy="regionId") 
    public Set<Province> getProvince() {
    return province;
    }public void setProvince(Set<Province> province) {
    this.province = province;
    }
    @Override
    public boolean equals(Object o) {
    // TODO Auto-generated method stub
    return false;
    }
    @Override
    public int hashCode() {
    // TODO Auto-generated method stub
    return 0;
    }
    @Override
    public String toString() {
    // TODO Auto-generated method stub
    return null;
    }public static long getSerialVersionUID() {
    return serialVersionUID;
    }
    }哪里不对呢?????
      

  4.   

    Region is not mapped [from Region ]; nested exception is org.hibernate.hql.ast.QuerySyntaxException: Region is not mapped [from Region ]哪里map得不对阿郁闷阿、、、、、、
      

  5.   

    mappedBy指定了 对关系字段的维护方。这里是由user这个参数来维护,也就是由包含user 参数的那个entity来。也就是Address 多的一方,一对多默认是由多的一方来维护关系字段,这也是很显然的,因为这个字段就在多的一方的表里。
      

  6.   

    @OneToMany(mappedBy= "region")   
    对应到你Province   里面对象的 region 字段。
    还有 注解最好写在 每个参数的get方法上。