ile bir sorgu yaparken 'özelliğini çözemedi' Böyle tanımlanan hazırda bir OneToMany ilişki var.
Arama yöntemleri Group.getUsers()
ve User.getGroup()
düzgün çalışıyor. Ama aynı zamanda sütuna group_id
sonra bir sorgu yapmak gerekir:hazırda istisna Kriterleri ve Kısıtlamalar
Criteria criteria = Activator.getDefault().getSQLSession().createCriteria(User.class);
Criterion c = Restrictions.eq("group_id", 1); // an id of a group
criteria.add(c);
Criterion
nesne bir yöntem oluşturulur ve bu yüzden, diğer bire birçok tablolar için olabilir veya başka sütun içerebilir getUsers()
yöntemini kullanamıyorum.
org.hibernate.QueryException: could not resolve property: group_id of: com.example.User
at org.hibernate.persister.entity.AbstractPropertyMapping.propertyException(AbstractPropertyMapping.java:81)
at org.hibernate.persister.entity.AbstractPropertyMapping.toType(AbstractPropertyMapping.java:75)
at org.hibernate.persister.entity.AbstractEntityPersister.getSubclassPropertyTableNumber(AbstractEntityPersister.java:1482)
at org.hibernate.persister.entity.BasicEntityPropertyMapping.toColumns(BasicEntityPropertyMapping.java:62)
and so on ...
Ne sorun olabilir:
Maalesef, yukarıdaki kod aşağıdaki istisna verir?
Düzenleme: user759837 önerdi değişim (Criterion c = Restrictions.eq("group", 1);
) sonra
, ben criteria.list()
çağırdığınızda, bu hata mesajını alıyorum: could not get a field value by reflection getter of com.example.Group.id
java.lang.IllegalArgumentException: Can not set java.lang.Long field com.example.BaseModel.id to java.lang.Long
at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(Unknown Source)
at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(Unknown Source)
at sun.reflect.UnsafeFieldAccessorImpl.ensureObj(Unknown Source)
at sun.reflect.UnsafeObjectFieldAccessorImpl.get(Unknown Source)
at java.lang.reflect.Field.get(Unknown Source)
at org.hibernate.property.DirectPropertyAccessor$DirectGetter.get(DirectPropertyAccessor.java:59)
at org.hibernate.tuple.entity.AbstractEntityTuplizer.getIdentifier(AbstractEntityTuplizer.java:227)
at org.hibernate.persister.entity.AbstractEntityPersister.getIdentifier(AbstractEntityPersister.java:3875)
at org.hibernate.persister.entity.AbstractEntityPersister.isTransient(AbstractEntityPersister.java:3583)
at org.hibernate.engine.ForeignKeys.isTransient(ForeignKeys.java:203)
at org.hibernate.engine.ForeignKeys.getEntityIdentifierIfNotUnsaved(ForeignKeys.java:242)
at org.hibernate.type.EntityType.getIdentifier(EntityType.java:456)
at org.hibernate.type.ManyToOneType.nullSafeSet(ManyToOneType.java:130)
...
BaseModel sınıftır
@MappedSuperclass
public abstract class BaseModel {
@Id
@GeneratedValue
private Long id;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
}
long id
ile de denedim, ancak aynı hatadır.
Düzenleme 2: Restrictions.eq("group", {A_GROUP_OBJECT});
o mümkün olabilir: kazma bir sürü sonra
, bu Criterion
nesne, parametre olarak değil bir kimliği, bir grup nesneyi alması gerektiğini görünüyor Orada bir kimlik yolluyorum?
+1 Bana da yardımcı oldu, ama neden böyle davranıyor?Hazırda bekar bir kadınım ve belgelere bakmak bana tüm sihrin öğrenmesinin yıllar alacağı izlenimini veriyor. – Rajish
Neden bilmiyorum, ama yardımcı olur =) – hilbert