2015-04-17 47 views
1

我正在尝试编写一个HQL查询来获取记录的ID。但查询是给我这个错误如何为多个实体编写HQL查询

org.hibernate.QueryException:无法解析属性:的CompanyMaster:EntityPack.UserTypeMenuBarComp [选择userTypeMenuBar.userMenuBar.menuBarId FROM EntityPack.UserTypeMenuBarComp作为UserTypeMenuBarComp其中UserTypeMenuBarComp.companyGroupMaster.companyGroupId = 4和UserTypeMenuBarComp.CompanyMaster.companyMasterId = 2和UserTypeMenuBarComp.userTypeMenuBar.userType.userTypeId = 2]

这是我的查询:

select userTypeMenuBar.userMenuBar.menuBarId FROM UserTypeMenuBarComp as UserTypeMenuBarComp where UserTypeMenuBarComp.companyGroupMaster.companyGroupId=" + 
    UsercompGid(LoginImpl.masterid) + 
    " and UserTypeMenuBarComp.CompanyMaster.companyMasterId=" + 
    Usercompid(LoginImpl.masterid) + 
    " and UserTypeMenuBarComp.userTypeMenuBar.userType.userTypeId=" + 
    LoginImpl.usertypid + "" 

下面是实体类(UserTypeMenuCompany):

@Entity 
public class UserTypeMenuCompany implements Serializable { 
    private static final long serialVersionUID = 1L; 
    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    @Basic(optional = false) 
    @Column(name = "User_Type_Menu_Company_Id") 
    private Integer userTypeMenuCompanyId; 
    @Basic(optional = false) 
    @Column(name = "Status") 
    private String status; 
    @Column(name = "Markers") 
    private String markers; 
    @ManyToOne(optional = false) 
    private UserTypeMenu userTypeMenu; 
    @ManyToOne(optional = false) 
    private CompanyMaster companyMaster; 
    @JoinColumn(name = "Company_Group_Id", referencedColumnName = "Company_Group_Id") 
    @ManyToOne(optional = false) 
    private CompanyGroupMaster companyGroupMaster; 

(UserTypeMenuBar)

public class UserTypeMenuBar implements Serializable { 
    private static final long serialVersionUID = 1L; 
    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    @Basic(optional = false) 
    @Column(name = "User_Type_Menu_Bar_Id") 
    private Integer userTypeMenuBarId; 
    @Basic(optional = false) 
    @Column(name = "Status") 
    private String status; 
    private String markers; 
    //@JoinColumn(name = "User_Type_Id", referencedColumnName = "User_Type_Id") 
    @ManyToOne(optional = false) 
    private UserType userType; 
    // @JoinColumn(name = "Menu_Bar_Id", referencedColumnName = "Menu_Bar_Id") 
    @ManyToOne(optional = false) 
    private UserMenuBar userMenuBar; 

(UserMenuBar)

public class UserMenuBar implements Serializable { 
    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    @Basic(optional = false) 
    @Column(name = "Menu_Bar_Id") 
    private Integer menuBarId; 
    @Basic(optional = false) 
    @Column(name = "Menu_Bar_Desc") 
    private String menuBarDesc; 
    @Basic(optional = false) 
    @Column(name = "Status") 
    private String status; 

    @Basic(optional = false) 
    @Column(name = "Markers") 
    private String markers; 

和(用户类型)

public class UserType { 
     @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    @Basic(optional = false) 
    @Column(name = "User_Type_Id") 
    private Integer userTypeId; 
    @Basic(optional = false) 
    @Column(name = "User_Type") 
    private String userType; 
    @Basic(optional = false) 
    @Column(name = "User_Type_Desc") 
    private String userTypeDesc; 
    @Basic(optional = false) 
    @Column(name = "Status") 
    private String status; 
     @Basic(optional = false) 
    @Column(name = "Markers") 
    private String markers; 
+0

你好@Chirag KAMAT,你解决了,你有错误在你的问题中提到或者你仍然错误? – Dev

回答

0

根据HQL reference Java类和属性是区分大小写的

除了Java类和属性,查询是不区分大小写的名称除外。因此SeLeCT与sELEct与SELECT相同,但org.hibernate.eg.FOO不是org.hibernate.eg.Foo,而foo.barSet不是foo.BARSET。

所以你NEDD在这里解决您的查询: UserTypeMenuBarComp.companyMaster.companyMasterId - companyMaster应小写字母Ç

0

除了@Popandopolos答案开始我想用你的查询将帮助你加入的。

请访问Hibernate文档上Associations and joins了解更多信息

如果你正在使用Hibernate查询,那么我认为您的查询看起来像下面

select userTypeMenuBar.userMenuBar.menuBarId FROM UserTypeMenuBarComp as UserTypeMenuBarComp 
inner join UserTypeMenuBarComp.companyGroupMaster 
inner join UserTypeMenuBarComp.CompanyMaster 
inner join UserTypeMenuBarComp.userTypeMenuBar.userType 
where UserTypeMenuBarComp.companyGroupMaster.companyGroupId=" + 
    UsercompGid(LoginImpl.masterid) + 
    " and UserTypeMenuBarComp.CompanyMaster.companyMasterId=" + 
    Usercompid(LoginImpl.masterid) + 
    " and UserTypeMenuBarComp.userTypeMenuBar.userType.userTypeId=" + 
    LoginImpl.usertypid + ""