Я не знаю, как точно выразить то, что я ищу, поэтому я объясню, что у меня есть, а затем то, что я пытаюсь сделать.Как получить объект во «много» части из однонаправленного отношения «Один-ко-многим»?
У меня есть модель класса, которая имеет 2 класса с однонаправленными отношениями «один-ко-многим».
public class TaxType extends Entity implements java.io.Serializable {
//stuff
private Set<TaxTypeAttribute> listTaxTypeAttribute = new HashSet<>(0);
}
public class TaxTypeAttribute extends Entity implements java.io.Serializable {
private String attributeName;
//stuff, but no reference to TaxType
}
Entity Класс как первичный стандартный ключ, мы называем это «OID шаблон проектирования», но понятия не если это не похоже, что в английском.
public class Entity {
private String oid;
//constructor, get and set
}
На отображения, это выглядит следующим образом:
<class name="entity.TaxType" table="taxttype" catalog="tax_type" optimistic-lock="version">
<id name="oid" type="string">
<column name="OIDtt" length="50" />
<generator class="uuid2" />
</id>
<set name="listAtributoTipoImpuesto">
<key column="OIDtt" not-null="true"/>
<one-to-many class="entidades.AtributoTipoImpuesto" />
</set>
</class>
<!-- two separated files, this is just for showing -->
<class name="entity.TaxTypeAttribute" table="taxtypeattribute" catalog="tax_type" optimistic-lock="version">
<id name="oid" type="string">
<column name="OIDtta" length="50" />
<generator class="uuid2" />
</id>
<property name="attributeName" type="string">
<column name="attributeName" length="50" not-null="true" />
</property>
</class>
В одном шаге программы, у меня есть TaxType и attributeName
от TaxTypeAttribute, но мне нужно, чтобы получить полный TaxTypeAttribute. Я делаю запросы через API критериев. Я мог бы сделать taxType.getListTaxTypeAttribute();
и сделать цикл, пока не найду объект, но я хотел бы знать, есть ли способ сделать это, используя некоторые запросы Hibernate.
Я пытался делать taxType.getOid();
, а затем использовать это и в attributeName
, но он бросает исключение:
Exception in thread "main" org.hibernate.QueryException: could not resolve property: OIDtt of: entity.TaxTypeAttribute
Любые улики? Спасибо вам, и простите меня за мой плохой английский
EDIT: Для того, чтобы следовать шаблонов проектирования, мы используем этот метод, чтобы сделать SELECT, querys: Awful thing we use for querys. То, как я это сделал это:
ArrayList<DTOCriteria> criteriaList = new ArrayList<>();
DTOCriteria c1 = new DTOCriteria();
c1.setAttribute("OIDtt");
c1.setOperation("=");
c1.setValue(taxType.getOID());
criteriaList.add(c1);
ArrayList<Object> found = search("TaxTypeAttribute");
Я мог бы добавить еще один DTOCriteria, если я хочу («ATTRIBUTENAME», «=»; ATTRIBUTENAME, например), но если первый не работает это своего рода бесполезный. Я также попытался (просто потому, что это бесплатно), используя атрибут «TaxType» в качестве атрибута и объект TaxType в качестве значения, но также не работал.
PS: код работает. Я использую его для других запросов и работает, он просто не работает для этого, или я не знаю, как заставить его работать. Может быть, вы не можете делать такого рода поиск, я не знаю.
Похоже, что существует проблема с отображением. Исправьте имена pojo и столбцов и таблиц. Также отправьте свой код, где вы произвели запрос. – Akshay
Отображение в порядке, по крайней мере, оно работает для каждого другого запроса Criteria. Это единственный, кто не работает. Я редактирую сообщение, чтобы добавить запрос – fkchaud