2
我很难在我的应用程序中加入此查询。我有两个班,Encounter
和CheckedEncounter
。 CheckedEncounter
是我用来管理已经处理的Encounters
的临时模型。它看起来像这样:用JPA加入查询?
@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;
}
我想要做的是选择每一次相遇,这是为特定用户创建并没有CheckedEncounters记录,但(不能内CheckedEncounters TABEL发现所以只有的那些)
这一行,我选择我的遭遇对我的特定用户:
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 = ?]
这又回到了Encounter列表?来自Encounter的 – networkprofile
返回Encounter列表。这是具有附加条件的普通查询,因此可以用作例如一个命名查询(然后你可以添加'AND enc.user =:user'左右)或者直接由EntityManager执行。 – marc
所以我应该有'List encounterrequess = from Encounter as enc ...'? –
networkprofile