Question

I'm a beginner to HQL, and I'm stuck at retrieval of VesselOperator Records using HQL

My code look alike below.

CompanyId.java

@Embeddable
public class CompanyId {

public CompanyId(){

}

@Column(name="COMPANY_CODE")
private String companyCode;

@Column(name="BRANCH_CODE")
private String branchCode;

//Getters and Setters
}

Company.java

@Entity
@Table(name = "COMPANY")
public class Company{

public Company(){

}

@EmbeddedId
private CompanyId companyId;

@OneToMany(mappedBy = "company")
private Collection<VesselOperator> vesselOperator = new ArrayList<VesselOperator>();

public CompanyId getCompanyId() {
    return companyId;
}
public void setCompanyId(CompanyId companyId) {
    this.companyId = companyId;
}
public Collection<VesselOperator> getVesselOperator() {
    return vesselOperator;
}
public void setVesselOperator(Collection<VesselOperator> vesselOperator) {
    this.vesselOperator = vesselOperator;
}
@Column(name = "COMPANY_NAME")
private String companyName;

//Getters & Setters

}

VesselOperator.java

@Entity
@Table(name = "VESSEL_OPERATOR")
public class VesselOperator{

public VesselOperator(){

}

@Id
@Column(name="OPERATOR_CODE")
private String operatorCode;

@ManyToOne
@JoinColumns({@JoinColumn(name="INTEGRATED_COMPANY_CODE", referencedColumnName="COMPANY_CODE"),
    @JoinColumn(name="INTEGRATED_BRANCH_CODE", referencedColumnName="BRANCH_CODE")
    })
private Company company;


public Company getCompany() {
    return company;
}
public void setCompany(Company company) {
    this.company = company;
}
@Column(name="OPERATOR_NAME")
private String  operatorName;

@Column(name="CONTACT_PERSON_NAME")
private String  contactPersonName;

//Getters and Setters
}

And from my DAO class, I'm trying to list all VesselOperators using Query as below,

        Query query = (Query) session.createQuery("SELECT " +
            "v.company.companyId.companyCode" +
            "v.company.companyId.branchCode" +
            "from VesselOperator v");

    List<Object[]> rows = query.list();
    for (Object[] row : rows) {
        String cmpnyCode = (String) row[0];
        String cmpnyBrnch = (String) row[1];

        System.out.println("cmpnyCode "+cmpnyCode +"  cmpnyBrnch  "+cmpnyBrnch );
    }

And I endup with below exception.

Exception in thread "main" org.hibernate.hql.ast.QuerySyntaxException: unexpected token: VesselOperator near line 1, column 74 [SELECT v.company.companyId.companyCodev.company.companyId.branchCodefrom VesselOperator v] 

And help is really appreciated.Thanks

Was it helpful?

Solution

Reading the error message makes the error immediately identifiable:

SELECT v.company.companyId.companyCodev.company.companyId.branchCodefrom

Don't you see that some spaces are missing in the query?

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top