当对象是另一个实体类的属性时,使用HQL选择对象列表

用户名

我正在尝试List<Role>使用HQL-从以下实体类中获取一个

@Entity
@Table(name="APPL_APPROVAL_ROLES")

public class ApplApprovalRoles implements Serializable, Comparable<ApplApprovalRoles> {

    private static final long serialVersionUID = 1L;

    @Id
    @Column(name="id", updatable=false)
    @SequenceGenerator(name="appl_approval_roles_id_seq",sequenceName="appl_approval_roles_id_seq")
    @GeneratedValue(generator="appl_approval_roles_id_seq")
    private int id;

    @Column(name="appl_name")
    private String applName;

    @OneToOne
    @JoinColumn(name="client_id")
    private Client client;

    @OneToOne
    @JoinColumn(name="role_id")
    private Role role;

    @Column(name="stage_num")
    private int stageNum;

    @Column(name="active",length=1)
    @Type(type="yes_no")
    private boolean active = false;

    public ApplApprovalRoles(){}
    public ApplApprovalRoles(int stageNum, String applName, 
            Client client, Role role, boolean active){

        this.stageNum = stageNum;
        this.applName = applName;
        this.client = client;
        this.role = role;
        this.active = active;
    }

    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }

    public String getApplName() {
        return applName;
    }
    public void setApplName(String applName) {
        this.applName = applName;
    }

    public Client getClient() {
        return client;
    }
    public void setClient(Client client) {
        this.client = client;
    }

    public Role getRole() {
        return role;
    }
    public void setRole(Role role) {
        this.role = role;
    }

    public int getStageNum() {
        return stageNum;
    }
    public void setStageNum(int stageNum) {
        this.stageNum = stageNum;
    }

    public boolean isActive() {
        return active;
    }

    public void setActive(boolean active) {
        this.active = active;
    }
}

角色类是-

@Entity
@Table(name="role")
public class Role implements Serializable, Comparable<Role> {

    @Id
    @Column(name="id", updatable=false)
    @SequenceGenerator(name="role_id_seq", sequenceName="role_id_seq")
    @GeneratedValue(generator="role_id_seq")
    private int id;

    @OneToOne
    @JoinColumn(name="client_id", nullable=false)
    private Client client;

    @Column(name="code", nullable=true)
    private String code;

    @Column(name="name", nullable=false)
    private String name;

    @Column(name="binary_code")
    private String binaryCode;

    public Role(){}

    public Role(int id, String code, String name) {
        this.id = id;
        this.code = code;
        this.name = name;
    }

    public Role(String code, String name, Client client) {
        this.code = code;
        this.name = name;
        this.client = client;
    }

    public Role(Client client) {
        this.client = client;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id=id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public Client getClient() {
        return client;
    }

    public void setClient(Client client) {
        this.client = client;
    }
} 

我正在尝试的HQL-

@SuppressWarnings("unchecked")
public List<Role> getRoleByClientAndAppName(Client client, String applName){
    String hql = "select role from ApplApprovalRoles where client_id = :clientId and appl_name = :applName";
    Session session = this.getSessionFactory().getCurrentSession();
    Query query = session.createQuery(hql);
    query.setParameter("clientId", client.getId());
    query.setParameter("applName", applName);

    List<Role> roles = (List<Role>)query.list();

    return roles;
}

这给了我以下错误-

javax.el.ELException: org.hibernate.exception.SQLGrammarException: could not execute query
    at org.jboss.el.util.ReflectionUtil.invokeMethod(ReflectionUtil.java:332)
    at org.jboss.el.util.ReflectionUtil.invokeMethod(ReflectionUtil.java:273)
    at org.jboss.el.parser.AstMethodSuffix.getValue(AstMethodSuffix.java:59)
    at org.jboss.el.parser.AstValue.getValue(AstValue.java:67)
    at org.jboss.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186)
    at org.springframework.binding.expression.el.BindingValueExpression.getValue(BindingValueExpression.java:54)
    at org.springframework.binding.expression.el.ELExpression.getValue(ELExpression.java:54)
    ... 58 more
Caused by: org.hibernate.exception.SQLGrammarException: could not execute query
    at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:90)
    at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
    at org.hibernate.loader.Loader.doList(Loader.java:2235)
    at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2129)
    at org.hibernate.loader.Loader.list(Loader.java:2124)
    at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:401)
    at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:363)
    at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:196)
    at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1149)
    at org.hibernate.impl.QueryImpl.list(QueryImpl.java:102)
    at 
    at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
    at org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:692)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
    at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:107)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
    at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:625)
    at com.infoimage.infotrac.proofing.service.ProofingLogService$$EnhancerByCGLIB$$d2fe9334.getRoleBasedProofingList(<generated>)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.jboss.el.util.ReflectionUtil.invokeMethod(ReflectionUtil.java:328)
    ... 64 more
Caused by: java.sql.SQLException: ORA-00918: column ambiguously defined

    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:113)
    at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
    at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288)
    at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:754)
    at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:219)
    at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:813)
    at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1051)
    at oracle.jdbc.driver.T4CPreparedStatement.executeMaybeDescribe(T4CPreparedStatement.java:854)
    at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1156)
    at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3415)
    at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3460)
    at com.caucho.sql.UserPreparedStatement.executeQuery(UserPreparedStatement.java:108)
    at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:208)
    at org.hibernate.loader.Loader.getResultSet(Loader.java:1812)
    at org.hibernate.loader.Loader.doQuery(Loader.java:697)
    at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:259)
    at org.hibernate.loader.Loader.doList(Loader.java:2232)
    ... 86 more

选择所有角色的等效oracle SQL查询为-

select ROLE_ID from APPL_APPROVAL_ROLES where CLIENT_ID='clnt110' and APPL_NAME='Checking_statements';

SQL工作正常。但是HQL出现了问题。谁能帮我?非常感谢。

用户名

Chaitanya感谢您的回答org.hibernate.hql.ast.QuerySyntaxException: Invalid path: 'client.id'。当我尝试您的回答时,它给出了错误。然后,我使用以下hql(对您的hql进行了一些修改)为我提供了正确的结果-

String hql = "select role from ApplApprovalRoles a where a.client.id = :clientId and a.applName = :applName";

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

python中使用另一个类对象的列表作为类属性时的奇怪行为

来自分类Dev

从另一个未知jQuery对象中选择对象的最佳方法

来自分类Dev

如何通过另一个对象的字段选择对象

来自分类Dev

如何将实体属性与来自另一个实体的对象列表的对象进行映射?

来自分类Dev

当对象从另一个类返回时无法保存实体框架中的更改

来自分类Dev

在使用 API 和 ANGULAR 7 选择对象时,我们如何将对象从一个数组移动到另一个数组?

来自分类Dev

如何检查一个对象是否嵌套在另一个对象的属性中作为属性?

来自分类Dev

从另一个类C ++获取对象的属性

来自分类Dev

如何通过另一个包含一个对象的对象访问一个对象,该对象是我要访问的对象的属性?

来自分类Dev

获取对象列表中的最高日期,并获取其类的另一个属性

来自分类Dev

如何检查嵌套对象是否是另一个不使用 jQuery 的对象的后代

来自分类Dev

对象是否面对另一个

来自分类Dev

如果我有一个对象是另一个对象的属性,如何从该属性对象引用主对象?

来自分类Dev

如何检查一个列表中的对象是否在另一个嵌套列表中?

来自分类Dev

引用相同对象类型的另一个对象实例的类对象属性

来自分类Dev

对象使用另一个Java类

来自分类Dev

如何使用SDO_JOIN查找一个对象是否在另一个对象内

来自分类Dev

选择实体另一个属性的属性

来自分类Dev

如何知道一个对象是否包含另一个对象

来自分类Dev

如何测试一个对象是否是另一个对象

来自分类Dev

测试一个对象是否依赖于另一个对象

来自分类Dev

如何检查一个对象是否包含另一个对象,例如

来自分类Dev

从另一个对象创建一个对象是更好的做法

来自分类Dev

在另一个内部绑定一个类的对象的属性不起作用

来自分类Dev

仅当对象与上一个jq具有不同的元素时,才选择对象

来自分类Dev

在另一个类中使用一个类的对象?

来自分类Dev

在另一个类中使用一个类对象PYTHON

来自分类Dev

从与另一个属性对应的对象列表中获取属性列表

来自分类Dev

C#-打印/写出/更改可变的对象列表,属性在另一个类中。(很好的答案)

Related 相关文章

  1. 1

    python中使用另一个类对象的列表作为类属性时的奇怪行为

  2. 2

    从另一个未知jQuery对象中选择对象的最佳方法

  3. 3

    如何通过另一个对象的字段选择对象

  4. 4

    如何将实体属性与来自另一个实体的对象列表的对象进行映射?

  5. 5

    当对象从另一个类返回时无法保存实体框架中的更改

  6. 6

    在使用 API 和 ANGULAR 7 选择对象时,我们如何将对象从一个数组移动到另一个数组?

  7. 7

    如何检查一个对象是否嵌套在另一个对象的属性中作为属性?

  8. 8

    从另一个类C ++获取对象的属性

  9. 9

    如何通过另一个包含一个对象的对象访问一个对象,该对象是我要访问的对象的属性?

  10. 10

    获取对象列表中的最高日期,并获取其类的另一个属性

  11. 11

    如何检查嵌套对象是否是另一个不使用 jQuery 的对象的后代

  12. 12

    对象是否面对另一个

  13. 13

    如果我有一个对象是另一个对象的属性,如何从该属性对象引用主对象?

  14. 14

    如何检查一个列表中的对象是否在另一个嵌套列表中?

  15. 15

    引用相同对象类型的另一个对象实例的类对象属性

  16. 16

    对象使用另一个Java类

  17. 17

    如何使用SDO_JOIN查找一个对象是否在另一个对象内

  18. 18

    选择实体另一个属性的属性

  19. 19

    如何知道一个对象是否包含另一个对象

  20. 20

    如何测试一个对象是否是另一个对象

  21. 21

    测试一个对象是否依赖于另一个对象

  22. 22

    如何检查一个对象是否包含另一个对象,例如

  23. 23

    从另一个对象创建一个对象是更好的做法

  24. 24

    在另一个内部绑定一个类的对象的属性不起作用

  25. 25

    仅当对象与上一个jq具有不同的元素时,才选择对象

  26. 26

    在另一个类中使用一个类的对象?

  27. 27

    在另一个类中使用一个类对象PYTHON

  28. 28

    从与另一个属性对应的对象列表中获取属性列表

  29. 29

    C#-打印/写出/更改可变的对象列表,属性在另一个类中。(很好的答案)

热门标签

归档