У меня есть следующая структура EJB. Не удивляйтесь Animal
и Inventory [111] 40181], эти классы предназначены только для демонстрации структуры в упрощенном виде ( Обновление : я изменил имена классов, чтобы построить более понятный пример. Другой реализацией
IdTag
может быть BarcodeId
). Обратите внимание, что нет обратной зависимости от IdTag
к Animal
или Inventory
, и давайте предположим, что RfidTag.code
уникален. Я прочитал Получение полиморфных объектов гибернации с помощью критериев запроса и Полиморфный запрос гибернации , но эти обсуждения, похоже, не отвечают на мой вопрос.
public interface ItemWithIdTag
{
IdTag getIdTag();
void setIdTag(IdTag idTag);
}
@Entity public class Animal implements ItemWithIdTag,Serializable
{
@Id @GeneratedValue(strategy=GenerationType.AUTO) private long id;
@OneToOne(cascade = CascadeType.ALL)
private IdTag idTag;
}
@Entity public class Inventory implements ItemWithIdTag,Serializable
{
@Id @GeneratedValue(strategy=GenerationType.AUTO) private long id;
@OneToOne(cascade = CascadeType.ALL)
private IdTag idTag;
}
@Entity @Table(name = "IdTag") @Inheritance(strategy= InheritanceType.JOINED)
public class IdTag implements Serializable
{
@Id @GeneratedValue(strategy=GenerationType.AUTO) private long id;
private Date created;
}
@Entity @Table(name = "RfidTag")
public class RfidTag extends IdTag implements Serializable
{
private String code;
}
Теперь я хочу запросить либо Животное
или Инвентарь
для данного RfidTag.code
, например Animal ejb = bean.fEntityWithRfidTag (Animal.class, «myRfIdCode»);
public T fOwner(Class type, String catName)
{
CriteriaBuilder criteriaBuilder = em.getCriteriaBuilder();
CriteriaQuery criteriaQuery = criteriaBuilder.createQuery(type);
Root from = criteriaQuery.from(type);
Path
К сожалению, получить следующая ошибка:
javax.ejb.EJBException: java.lang.IllegalArgumentException:
Unable to resolve attribute [code] against path [null]
Я предполагаю, что это связано с наследованием IdTag
-> RfidTag
и Animal
знает только о IdTag
и а не RfidTag.code
. Возможны ли подобные запросы?