Solved

Hibernate query using joins and like operator

Posted on 2013-12-19
1
375 Views
Last Modified: 2013-12-19
I have two model classes:  

Class 1 looks like this:

@Entity
@Table(name = "Cdm_location_charge_class", catalog = "emscribedx")
public class Cdm_location_charge_class {
	private static Logger  LOG = Logger.getLogger(Cdm_location_charge_class.class);
	private int indx;
	private String location;
	private String charge_Class;
	private List <Cdm_trans> cdm_Trans;
	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	@Column(name = "indx")
	public int getIndx() {
		return indx;
	}
	public void setIndx(int indx) {
		this.indx = indx;
	}
	
	@Column(name = "location")
	public String getLocation() {
		return location;
	}
	public void setLocation(String location) {
		this.location = location;
	}
	@Column(name = "charge_Class")
	public String getCharge_Class() {
		return charge_Class;
	}
	public void setCharge_Class(String charge_Class) {
		this.charge_Class = charge_Class;
	}
	@OneToMany (mappedBy = "cdm_location_charge_class", targetEntity = Cdm_trans.class, cascade = CascadeType.ALL, fetch = FetchType.EAGER)
	public List<Cdm_trans> getCdm_Trans() {
		return cdm_Trans;
	}
	public void setCdm_Trans(List<Cdm_trans> cdm_Trans) {
		this.cdm_Trans = cdm_Trans;
	}
}

Open in new window

--------------------------------------------------------------
And class 2 looks like this:



@Entity
@Table(name = "CDM_Trans", catalog = "emscribedx")
public class Cdm_trans {
	private static Logger LOG = Logger.getLogger(Cdm_trans.class);

	private int indx;
	private String charge_Class;
	private String charge_Code;
	private String charge_Description;
	private String charge_Eligibility;
	private String exp_Date;
	private BigDecimal rate_Charge;
	private String cpt_Code;
	private int rev_Code;
	private String charge_Type;
	private Cdm_location_charge_class locationchargeclass;

	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	@Column(name = "indx")
	public int getIndx() {
		return indx;
	}

	public void setIndx(int indx) {
		this.indx = indx;
	}

	@Column(name = "charge_Class")
	public String getCharge_Class() {
		return charge_Class;
	}

	public void setCharge_Class(String charge_Class) {
		this.charge_Class = charge_Class;
	}

	@Column(name = "charge_Code")
	public String getCharge_Code() {
		return charge_Code;
	}

	public void setCharge_Code(String charge_Code) {
		this.charge_Code = charge_Code;
	}

	@Column(name = "charge_Description")
	public String getCharge_Description() {
		return charge_Description;
	}

	public void setCharge_Description(String charge_Description) {
		this.charge_Description = charge_Description;
	}

	@Column(name = "charge_Eligibility")
	public String getCharge_Eligibility() {
		return charge_Eligibility;
	}

	public void setCharge_Eligibility(String charge_Eligibility) {
		this.charge_Eligibility = charge_Eligibility;
	}

	@Column(name = "exp_Date")
	public String getExp_Date() {
		return exp_Date;
	}

	public void setExp_Date(String exp_Date) {
		this.exp_Date = exp_Date;
	}

	@Column(name = "rate_Charge")
	public BigDecimal getRate_Charge() {
		return rate_Charge;
	}

	public void setRate_Charge(BigDecimal rate_Charge) {
		this.rate_Charge = rate_Charge;
	}

	@Column(name = "cpt_Code")
	public String getCpt_Code() {
		return cpt_Code;
	}

	public void setCpt_Code(String cpt_Code) {
		this.cpt_Code = cpt_Code;
	}

	@Column(name = "rev_Code")
	public int getRev_Code() {
		return rev_Code;
	}

	public void setRev_Code(int rev_Code) {
		this.rev_Code = rev_Code;
	}

	@Column(name = "charge_Type")
	public String getCharge_Type() {
		return charge_Type;
	}

	public void setCharge_Type(String charge_Type) {
		this.charge_Type = charge_Type;
	}

	@ManyToOne
	@JoinColumn(name = "charge_Class", insertable = false, updatable = false)
	public Cdm_location_charge_class getLocationchargeclass() {
		return locationchargeclass;
	}

	public void setLocationchargeclass(
			Cdm_location_charge_class locationchargeclass) {
		this.locationchargeclass = locationchargeclass;
	}
}

Open in new window


-------------------------------------------------------------------------------------------------------------
The two classes correspond to two underlying tables:

Cdm_trans and Cdm_location_charge_class.    

I want to create a Hibernate Service that will give me the same result as the following sql query:

select cdm_trans.* from Cdm_trans, Cdm_location_charge_class where
cdm_location_charge_class.charge_Class = cdm_trans.charge_Class and
cdm_location_charge_class.location = <Some location passed to the method> and
Cdm_trans.charge_Description like '%<Some search term passed into the method>%;

My preference would be to do this using the Hibernate criteria API.   But I will go with HQL if that is the only way.     Can someone show me how to do this?

Thank you,
0
Comment
Question by:efamilant
1 Comment
 
LVL 59

Accepted Solution

by:
Kevin Cross earned 500 total points
ID: 39729185
0

Featured Post

DevOps Toolchain Recommendations

Read this Gartner Research Note and discover how your IT organization can automate and optimize DevOps processes using a toolchain architecture.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

I'm trying, I really am. But I've seen so many wrong approaches involving date(time) boundaries I despair about my inability to explain it. I've seen quite a few recently that define a non-leap year as 364 days, or 366 days and the list goes on. …
I have a large data set and a SSIS package. How can I load this file in multi threading?
Via a live example, show how to backup a database, simulate a failure backup the tail of the database transaction log and perform the restore.
Viewers will learn how to use the SELECT statement in SQL to return specific rows and columns, with various degrees of sorting and limits in place.

895 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

13 Experts available now in Live!

Get 1:1 Help Now