使用Subselect标签构造持久类查询

 前面文章阐述了,如果在Container,Box,Bottle三者的继承关系中配置HBM文件(box,bottle继承自Container)

现在,有一种更加简便的方式,使数据库中不需要建立一个box。bottle共享的表,而是分别建立Box和Bottle的表,这样更加复合面向对象的思想,而查询container则通过HBM配置文件来进行

Container持久类 其中Xparam,Yparam,Zparam对应box,bottle中的length等属性,只要保证都能包括Box,Bottle中的属性就可以,也就是说container属性是Box和Bottle和合集

本例子使用了hilo主键生成器策略所以,需要在数据库中建立一张维护高位值的表,并给出一个高位数值

 

CREATE   TABLE  `box` (
  `id` 
int ( 11 NOT   NULL   default   ' 0 ' ,
  `size` 
double   default   NULL ,
  `name` 
varchar ( 50 default   NULL ,
  `description` 
varchar ( 50 default   NULL ,
  `width` 
double   default   NULL ,
  `height` 
double   default   NULL ,
  `
len double   default   NULL ,
  
PRIMARY   KEY   (`id`)
) ENGINE
= InnoDB  DEFAULT  CHARSET = gb2312;

CREATE   TABLE  `bottle` (
  `id` 
int ( 11 NOT   NULL   default   ' 0 ' ,
  `size` 
double   default   NULL ,
  `name` 
varchar ( 20 default   NULL ,
  `diameter` 
double   default   NULL ,
  `height` 
double   default   NULL ,
  `description` 
varchar ( 50 default   NULL ,
  
PRIMARY   KEY   (`id`)
) ENGINE
= InnoDB  DEFAULT  CHARSET = gb2312;

CREATE   TABLE  `hibernate_unique_key` (
  `next_hi` 
int ( 11 NOT   NULL   default   ' 0 ' ,
  
PRIMARY   KEY   (`next_hi`)
) ENGINE
= InnoDB  DEFAULT  CHARSET = gb2312;


package  subselect;

public   class  Container  ... {
   
private String id;
   
private double size;
   
private String name;
   
private String description;
   
private double xparam;
   
private double yparam;
   
private double zparam;
public String getDescription() ...{
    
return description;
}

public void setDescription(String description) ...{
    
this.description = description;
}

public String getId() ...{
    
return id;
}

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

public String getName() ...{
    
return name;
}

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

public double getSize() ...{
    
return size;
}

public void setSize(double size) ...{
    
this.size = size;
}

public double getXparam() ...{
    
return xparam;
}

public void setXparam(double xparam) ...{
    
this.xparam = xparam;
}

public double getYparam() ...{
    
return yparam;
}

public void setYparam(double yparam) ...{
    
this.yparam = yparam;
}

public double getZparam() ...{
    
return zparam;
}

public void setZparam(double zparam) ...{
    
this.zparam = zparam;
}

}


Box持久类

package  subselect;

public   class  Box  ... {
  
private int id;
  
private double size;
  
private String name;
  
private String description;
  
private double width;
  
private double length;
  
private double height;
public String getDescription() ...{
    
return description;
}

public void setDescription(String description) ...{
    
this.description = description;
}

public double getHeight() ...{
    
return height;
}

public void setHeight(double height) ...{
    
this.height = height;
}


public int getId() ...{
    
return id;
}

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

public double getLength() ...{
    
return length;
}

public void setLength(double length) ...{
    
this.length = length;
}

public String getName() ...{
    
return name;
}

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


public double getSize() ...{
    
return size;
}

public void setSize(double size) ...{
    
this.size = size;
}

public <

你可能感兴趣的:(Hibernate)