Присоединиться к запросу с JPA? - PullRequest
2 голосов
/ 29 июля 2011

У меня проблемы с этим запросом на соединение в моем приложении. У меня есть два класса, Encounter и CheckedEncounter. CheckedEncounter - это временная модель, которую я использую для управления Encounters, который уже был обработан. Это выглядит так:

@Entity
public class CheckedEncounters extends GenericModel {

    @Id
    @GeneratedValue
    @Column(name="ce_id")
    public int id;

    @Column(name="ce_encounter")
    @OneToOne
    public Encounter encounter;

    @Column(name="ce_synced")
    public boolean synchronised;

}

Что я хочу сделать, это выбрать все Encounter, которые были созданы для определенного пользователя и у которых еще нет записи CheckedEncounters (поэтому только те, которые не могут быть найдены внутри таблицы CheckedEncounters)

С помощью этой строки я выбираю все мои встречи для моего конкретного пользователя:

List<Encounter> encounterRequess = Encounter.find("byTargetUser", myuser).fetch();

Изменить:

public static List<Encounter> getNewEncountersByTargetUser(User targetUser){
    return Encounter.find("from Encounter as enc " +
            "where not exists ( " +
            "from CheckedEncounter as cenc " +
            "where cenc.encounter = enc)" +
            "and enc.targetUser = ?", targetUser).fetch();
}

Я пробовал это с предложенным запросом, но он выдает ошибку:

Execution exception
IllegalArgumentException occured : org.hibernate.hql.ast.QuerySyntaxException: CheckedEncounter is not mapped [from models.Encounter as enc where not exists ( from CheckedEncounter as cenc where cenc.encounter = enc)and enc.targetUser = ?]

1 Ответ

2 голосов
/ 29 июля 2011

Попробуйте

from Encounter as enc
where not exists (
    from CheckedEncounter as cenc 
    where cenc.encounter = enc
)

См. здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...