要点: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; } }
时间: 2024-10-29 03:05:33