I’m new to hibernate.
I have the following classes:
@Entity
@Table( name = "Users" )
public class User implements Serializable{
private static final long serialVersionUID = -3550174731709532722L;
private String userName;
private String pasportID;
private Company company;
private String name;
private String email;
private String phone1;
private String phone2;
private String password; //may be null/empty , will be kept hashed
private boolean isAdmin;
private Date lastLogin;
User() {} //not public on purpose!
public User(String userName, String pasportID, Company company,
String name, String email, String phone1, String phone2,
String password, boolean isAdmin) {
this.userName = userName;
this.pasportID = pasportID;
this.company = company;
this.name = name;
this.email = email;
this.phone1 = phone1;
this.phone2 = phone2;
this.password = password;
this.isAdmin = isAdmin;
}
@Id
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
@OneToOne(cascade = CascadeType.ALL)
public Company getCompany() {
return company;
}
public void setCompany(Company company) {
this.company = company;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPhone1() {
return phone1;
}
public void setPhone1(String phone1) {
this.phone1 = phone1;
}
public String getPhone2() {
return phone2;
}
public void setPhone2(String phone2) {
this.phone2 = phone2;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public boolean isAdmin() {
return isAdmin;
}
public void setAdmin(boolean isAdmin) {
this.isAdmin = isAdmin;
}
@Temporal(TemporalType.TIMESTAMP)
public Date getLastLogin() {
return lastLogin;
}
public void setLastLogin(Date lastLogin) {
this.lastLogin = lastLogin;
}
public String getPasportID() {
return pasportID;
}
public void setPasportID(String pasportID) {
this.pasportID = pasportID;
}
}
And:
@Entity
@Table( name = "COMPANIES" )
/**
* This class is an entity class that represent the company object in the database.
* This class holds no logic, only getters, setter and constructors.
*/
public class Company implements Serializable {
private static final long serialVersionUID = -4809404779999217296L;
private long companyID;
private CompanyType companyType;
private String name;
Company() {} //not public on purpose!
public Company(String name, CompanyType companyType) {
this.companyType = companyType;
this.name = name;
}
@Id
@GeneratedValue(generator="increment")
@GenericGenerator(name="increment", strategy = "increment")
public long getCompanyID() {
return companyID;
}
public void setCompanyID(long companyID) {
this.companyID = companyID;
}
@Enumerated(EnumType.STRING)
public CompanyType getCompanyType() {
return companyType;
}
public void setCompanyType(CompanyType companyType) {
this.companyType = companyType;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
And the enum:
public enum CompanyType { A,B,C //TODO }
I want to get a list of all the users that work in company “companyName”.
please nitice that User contains a refference to Company.
I’m quite sure a join query is required, but I can’t seem to nail the syntax.
I would very much appriciate your help with that.
Thanks!
First of all change the mapping from user to company to from ..as many users can belong to one comapny.
Then you can use the following query.
“from user u left outer join u.company where u.company.companyName=’XYZ'”