Получение следующего исключения:
Caused by: org.hibernate.QueryException: could not resolve property: primaryAddress of: com.hcentive.user.ContactInfo at org.hibernate.persister.entity.AbstractPropertyMapping.propertyException(AbstractPropertyMapping.java:62) ~[hibernate-core-5.1.0.Final.jar:5.1.0.Final] at org.hibernate.persister.entity.AbstractPropertyMapping.toType(AbstractPropertyMapping.java:56) ~[hibernate-core-5.1.0.Final.jar:5.1.0.Final] at org.hibernate.persister.entity.AbstractEntityPersister.getSubclassPropertyTableNumber(AbstractEntityPersister.java:1805) ~[hibernate-core-5.1.0.Final.jar:5.1.0.Final] at org.hibernate.persister.entity.BasicEntityPropertyMapping.toColumns(BasicEntityPropertyMapping.java:46) ~[hibernate-core-5.1.0.Final.jar:5.1.0.Final] at org.hibernate.persister.entity.AbstractEntityPersister.toColumns(AbstractEntityPersister.java:1780) ~[hibernate-core-5.1.0.Final.jar:5.1.0.Final] at org.hibernate.loader.criteria.CriteriaQueryTranslator.getColumns(CriteriaQueryTranslator.java:510) ~[hibernate-core-5.1.0.Final.jar:5.1.0.Final] at org.hibernate.loader.criteria.CriteriaQueryTranslator.getColumnsUsingProjection(CriteriaQueryTranslator.java:469) ~[hibernate-core-5.1.0.Final.jar:5.1.0.Final] at org.hibernate.criterion.Order.toSqlString(Order.java:109) ~[hibernate-core-5.1.0.Final.jar:5.1.0.Final] at org.hibernate.loader.criteria.CriteriaQueryTranslator.getOrderBy(CriteriaQueryTranslator.java:414) ~[hibernate-core-5.1.0.Final.jar:5.1.0.Final] at org.hibernate.loader.criteria.CriteriaJoinWalker.(CriteriaJoinWalker.java:106) ~[hibernate-core-5.1.0.Final.jar:5.1.0.Final] at org.hibernate.loader.criteria.CriteriaJoinWalker.(CriteriaJoinWalker.java:75) ~[hibernate-core-5.1.0.Final.jar:5.1.0.Final] at org.hibernate.loader.criteria.CriteriaLoader.(CriteriaLoader.java:80) ~[hibernate-core-5.1.0.Final.jar:5.1.0.Final] at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1773) ~[hibernate-core-5.1.0.Final.jar:5.1.0.Final] at org.hibernate.internal.CriteriaImpl.list(CriteriaImpl.java:363)
при сортировке столбца адреса в таблице данных, который определяется как:
{
"mData": function (customer) {
var address = customer.userProfile.contactInfo.primaryAddress;
return address ? address.displayString : "";
},
"aTargets": [4],
"sName": "userProfile.contactInfo.primaryAddress",
"sClass": "wrapWord100"
},
primaryAddress присутствует как получатель в объекте ContactInfo.java
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». Как решить эту проблему.
@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;
}
}
getter и setter присутствуют для primaryAddress в ContactInfo и также отображаются в таблице данных в пользовательском интерфейсе: userProfile.contactInfo.primaryAddress. Как исправить исключение без значительного изменения кода?
Не могли бы вы предоставить код ContactInfo?
Прикрепил сниппет.
Хорошо, в вашем ContactInfo только один участник: адреса. Он будет считаться столбцом в вашей таблице contactInfo. В противном случае primaryAddress не является членом, хотя вы назвали его сеттером и получателем.
Прошу прощения за то, что не очень хорошо понимаю, что вы видите проблему. Почему бы вам не добавить участника primaryAddess в свой класс contactInfo?




Вам нужно изменить свой запрос на это. Также это вернет список адресов, а не один адрес.
"mData": function (customer) {
var address = customer.userProfile.contactInfo.addresses;
return address ? address.displayString : "";
},
"aTargets": [4],
"sName": "userProfile.contactInfo.addresses",
"sClass": "wrapWord100"
},
Мне нужен только основной адрес. Как будет работать сортировка, если есть несколько адресов?
Вам нужно покинуть соединение, а затем проверить основное условие в предложении where.
primaryAddress не входит в ваш ContactInfo, верно? Если да, это нормально, что Hibernate выдал это исключение.