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;
	}

}
原文地址:https://www.cnblogs.com/youneverdie/p/3987667.html