我需要帮助来编写一个等同于以下查询的SQL查询的hibernate查询

select mo2.* from ManagedObjects mo, ManagedObjects mo1, ManagedObjects 
    mo2
    Where Mo1.Type = '' And Mo1.Name Like '%%'
    And Mo.Subtype = '' And Mo.Name Like '%%'
    And mo2.subtype = '' and mo2.name like '%%'
    And Mo.Idhierarchy = Substr(Mo2.Idhierarchy,0,Length(Mo.Idhierarchy))
    And Mo1.Idhierarchy = Substr(Mo.Idhierarchy,0,Length(Mo1.Idhierarchy));

谁能告诉我什么是最好的写作方式 . 表的内部连接也将根据用户输入标准而改变 .