• BroadLeaf 下定义ORM对象:Province,City,Area


    要点:BroadLeaf框架下定义ORM对象需要先定义一个接口, 然后在persistence-unit 的配置中进行声明,如不声明会报错:no persistent classes found for query class

    IProvince:

    import java.io.Serializable;
    
    import javax.annotation.Nonnull;
    
    public interface IProvince extends Serializable{
        
        @Nonnull
        public int getProv_Code();
    
        @Nonnull
        public String getProv_Name();
    
    }
    

    Province:

    import javax.persistence.CascadeType;
    import javax.persistence.EmbeddedId;
    import javax.persistence.Entity;
    import javax.persistence.FetchType;
    import javax.persistence.OneToMany;
    import javax.persistence.Table;
    
    import org.hibernate.annotations.Fetch;
    import org.hibernate.annotations.FetchMode;
    
    @Entity
    @Table(name = "PROVINCE")
    @SuppressWarnings("serial")
    public class Province implements IProvince,Serializable{
    	@EmbeddedId
    	private ProvincePK prov_PK;
    
    	
    	@OneToMany(mappedBy = "province", cascade = CascadeType.MERGE, fetch = FetchType.LAZY)
    	@Fetch(FetchMode.SUBSELECT)
    	private Set<City> cities;	
    
    	public int getProv_Code() {
    		return prov_PK.getProv_Code();
    	}
    
    	public String getProv_Name() {
    		return prov_PK.getProv_Name();
    	}
    
    	public Set<City> getCities() {
    		return cities;
    	}
    
    	public void setCities(Set<City> cities) {
    		this.cities = cities;
    	}
    
    	public ProvincePK getProv_PK() {
    		return prov_PK;
    	}
    
    	public void setProv_PK(ProvincePK prov_PK) {
    		this.prov_PK = prov_PK;
    	}
    	
    }
    

    ProvincePK(联合主键类):

    import java.io.Serializable;
    
    import javax.persistence.Embeddable;
    
    @Embeddable
    @SuppressWarnings("serial")
    public class ProvincePK implements Serializable{
    	
    	private int prov_Code;
    	
    	private String prov_Name;
    
    	@Override
    	public boolean equals(Object obj) {
    		if(obj instanceof ProvincePK){
    			if(((ProvincePK) obj).getProv_Code() == this.getProv_Code()
    					&& ((ProvincePK) obj).getProv_Name().equals(this.getProv_Name())){
    				return true;
    			}
    		}
    		return false;
    	}
    
    	@Override
    	public int hashCode() {
    		return prov_Name.hashCode() + prov_Code;
    	}
    
    	public int getProv_Code() {
    		return prov_Code;
    	}
    
    	public void setProv_Code(int prov_Code) {
    		this.prov_Code = prov_Code;
    	}
    
    	public String getProv_Name() {
    		return prov_Name;
    	}
    
    	public void setProv_Name(String prov_Name) {
    		this.prov_Name = prov_Name;
    	}
    }
    

    ICity:

    public interface ICity extends Serializable{
        
        @Nonnull
        public int getCity_Code();
    
        @Nonnull
        public String getCity_Name();
    
    }
    

    City:

    import org.hibernate.annotations.Fetch;
    import org.hibernate.annotations.FetchMode;
    
    @Entity
    @Table(name = "CITY")
    @SuppressWarnings("serial")
    public class City implements ICity,Serializable{
    	@EmbeddedId
    	private CityPK city_PK;
    	
    	@OneToMany(mappedBy = "city", cascade = CascadeType.MERGE, fetch = FetchType.LAZY)
    	@Fetch(FetchMode.SUBSELECT)
    	private Set<Area> areas;
    	
    	@ManyToOne
    	@JoinColumns({@JoinColumn(name = "prov_Code"),@JoinColumn(name = "prov_Name")})
    	private Province province;	
    
    	public CityPK getCity_PK() {
    		return city_PK;
    	}
    
    	public void setCity_PK(CityPK city_PK) {
    		this.city_PK = city_PK;
    	}
    
    	public Set<Area> getAreas() {
    		return areas;
    	}
    
    	public void setAreas(Set<Area> areas) {
    		this.areas = areas;
    	}
    
    	public Province getProvince() {
    		return province;
    	}
    
    	public void setProvince(Province province) {
    		this.province = province;
    	}
    
    	@Override
    	public int getCity_Code() {
    		return city_PK.getCity_Code();
    	}
    
    	@Override
    	public String getCity_Name() {
    		return city_PK.getCity_Name();
    	}
    	
    }
    

    CityPK:

    @Embeddable
    @SuppressWarnings("serial")
    public class CityPK implements Serializable{
    
    	private int city_Code;
    	
    	private String city_Name;
    	
    	@Override
    	public boolean equals(Object obj) {
    		if(obj instanceof ProvincePK){
    			if(((CityPK) obj).getCity_Code() == this.getCity_Code()
    					&& ((CityPK) obj).getCity_Name().equals(this.getCity_Name())){
    				return true;
    			}
    		}
    		return false;
    	}
    
    	@Override
    	public int hashCode() {
    		return city_Name.hashCode() + city_Code;
    	}
    	
    	public int getCity_Code() {
    		return city_Code;
    	}
    
    	public void setCity_Code(int city_Code) {
    		this.city_Code = city_Code;
    	}
    
    	public String getCity_Name() {
    		return city_Name;
    	}
    
    	public void setCity_Name(String city_Name) {
    		this.city_Name = city_Name;
    	}
    	
    }
    

    IArea:

    public interface IArea extends Serializable{
        
        @Nonnull
        public int getArea_Code();
    
        @Nonnull
        public String getArea_Name();
    
    }
    

    Area:

    @Entity
    @Table(name = "CITY_AREA")
    @SuppressWarnings("serial")
    public class Area implements IArea,Serializable{
    	@EmbeddedId
    	private AreaPK area_PK;
    	
    	@ManyToOne
    	@JoinColumns({@JoinColumn(name = "city_Code"),@JoinColumn(name = "city_Name")})
    	private City city;	
    
    	public AreaPK getArea_PK() {
    		return area_PK;
    	}
    
    	public void setArea_PK(AreaPK area_PK) {
    		this.area_PK = area_PK;
    	}
    
    	public City getCity() {
    		return city;
    	}
    
    	public void setCity(City city) {
    		this.city = city;
    	}
    
    	@Override
    	public int getArea_Code() {
    		return area_PK.getArea_Code();
    	}
    
    	@Override
    	public String getArea_Name() {
    		return area_PK.getArea_Name();
    	}	
    }
    

    AreaPK:

    @Embeddable
    @SuppressWarnings("serial")
    public class AreaPK implements Serializable{
    
    	private int area_Code;
    	
    	private String area_Name;
    	
    	@Override
    	public boolean equals(Object obj) {
    		if(obj instanceof ProvincePK){
    			if(((AreaPK) obj).getArea_Code() == this.getArea_Code()
    					&& ((AreaPK) obj).getArea_Name().equals(this.getArea_Name())){
    				return true;
    			}
    		}
    		return false;
    	}
    	
    	@Override
    	public int hashCode() {
    		return area_Name.hashCode() + area_Code;
    	}
    
    	public int getArea_Code() {
    		return area_Code;
    	}
    
    	public void setArea_Code(int area_Code) {
    		this.area_Code = area_Code;
    	}
    
    	public String getArea_Name() {
    		return area_Name;
    	}
    
    	public void setArea_Name(String area_Name) {
    		this.area_Name = area_Name;
    	}
    
    }
    
  • 相关阅读:
    洛谷 P1767 家族_NOI导刊2010普及(10)
    洛谷 P2919 [USACO08NOV]守护农场Guarding the Farm
    COGS 1619. [HEOI2012]采花
    UVA 11181 Probability|Given
    hdu 3336 Count the string
    洛谷 P2176 [USACO14FEB]路障Roadblock
    洛谷 P2691 逃离
    BZOJ 1040: [ZJOI2008]骑士
    vijos 1320 清点人数
    POJ 3417 Network
  • 原文地址:https://www.cnblogs.com/youneverdie/p/3987667.html
Copyright © 2020-2023  润新知