首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >org.hibernate.QueryException:无法解析属性,如果属性不作为列出现

org.hibernate.QueryException:无法解析属性,如果属性不作为列出现
EN

Stack Overflow用户
提问于 2018-09-26 08:40:39
回答 1查看 285关注 0票数 0

获得以下例外情况:

由: org.hibernate.persister.entity.AbstractPropertyMapping.propertyException(AbstractPropertyMapping.java:62):org.hibernate.QueryException:无法解决属性: primaryAddress of: com.hcentive.user.ContactInfo at org.hibernate.persister-5.1.0.Final.jar:5.1.0.Final.jar:5.1.0.Final.jar在org.hibernate.persister.entity.AbstractPropertyMapping.toType(AbstractPropertyMapping.java:56) ~hibernate-core-5.1.0.Final.jar:5.1.0.Final.jar:5.1.0.Final.jar.entity.AbstractEntityPersister.getSubclassPropertyTableNumber(AbstractEntityPersister.java:1805) ~hibernate-core-5.1.0.Final.jar:5.1.0.final.jar:5.1.0.Final.jar:5.1.0.final.jar:在org.hibernate.loader.criteria.CriteriaQueryTranslator.getColumns(CriteriaQueryTranslator.java:510) ~hibernate-core-5.1.0.final.jar:5.1.0.Final.jar在org.hibernate.loader.criteria.CriteriaQueryTranslator.getColumnsUsingProjection(CriteriaQueryTranslator.java:469) ~hibernate-核心-5.1.0.Final.jar:5.1.0.Final.jar:5.1.0.Final.jar:5.1.0.Final.jar:5org.hibernate.loader.criteria.CriteriaQueryTranslator.getOrderBy(CriteriaQueryTranslator.java:414) ~hibernate- .1.0.Final :5.1.0.Final.jar:5.1.0.Final.jar在org.hibernate.loader.criteria.CriteriaJoinWalker.(CriteriaJoinWalker.java:106) ~hibernate-core-5.1.0.Final.jar:5.1.0.Final.jar:5.1.0.0.Final.jar:5.1.0.在org.hibernate.loader.criteria.CriteriaLoader.(CriteriaLoader.java:80) ~hibernate-core-5.1.0.Final.jar:5.1.0.Final.jar:5.1.0.Final.jar在org.hibernate.internal.SessionImpl.list(SessionImpl.java:1773) ~hibernate-core-5.1.0.Final.jar:5.1.0.Final.jar:5.1.0.Final.jar:5.1.0.final.jar:5.1.0.final.jar在org.hibernate.internal.CriteriaImpl.list(CriteriaImpl.java:363)完成

同时对datatable中的address列进行排序,该列定义为:

代码语言:javascript
复制
{
                            "mData": function (customer) {
                                var address = customer.userProfile.contactInfo.primaryAddress;
                                return address ? address.displayString : "";

                            },
                            "aTargets": [4],
                            "sName": "userProfile.contactInfo.primaryAddress",
                            "sClass": "wrapWord100"
                         },

primaryAddress在ContactInfo.java实体中作为getter存在。

代码语言:javascript
复制
public Address getPrimaryAddress() {
    for (Address add : addresses) {
        if (null != add && AddressTypeEnum.Primary.toString().equals(add.getType())) {
            return add;
        }
    }
    return null;
}
private Set<Address> addresses = new HashSet<Address>();

错误可能是因为'primaryAddress‘在'ContactInfo’中没有作为列出现。如何解决这个问题。

代码语言:javascript
复制
    @Entity
    @Table(name = "CONTACT_INFO")
    public class ContactInfo extends Persistent {

    private Set<Address> addresses = new HashSet<Address>();

    @Valid
        public Address getPrimaryAddress() {
            for (Address add : addresses) {
                if (null != add && AddressTypeEnum.Primary.toString().equals(add.getType())) {
                    return add;
                }
            }
            return null;
        }
}
EN

回答 1

Stack Overflow用户

发布于 2018-09-27 05:12:01

您需要将查询更改为以下内容。此外,这将返回地址列表,而不是单个地址。

代码语言:javascript
复制
"mData": function (customer) {
                                var address = customer.userProfile.contactInfo.addresses;
                                return address ? address.displayString : "";

                            },
                            "aTargets": [4],
                            "sName": "userProfile.contactInfo.addresses",
                            "sClass": "wrapWord100"
                         },
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52513482

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档