2015-04-17 5 views
1

Я пытаюсь написать запрос HQL для получения идентификатора записи. но запрос дает мне эту ошибкуКак написать запрос 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; 

и (UserType)

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 ответ я думаю, что использование присоединиться в запросе поможет вам.

пожалуйста, посетите гибернации документацию по Associations and joins для получения дополнительной информации

если вы используете спящий режим запроса, то я думаю, что ваш запрос выглядеть, как показано ниже

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 + "" 
Смежные вопросы