我有2个实体:JPA使用WHERE子句
@Entity
public class Elements implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private Owner owner;
}
@Entity
public class Owner implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@OneToMany(fetch=FetchType.LAZY)
List<Elements> elements;
}
假设我想获取所有elemets从元素表bellonging给业主和therfore我用:
TypedQuery query=em.createQuery("SELECT elem FROM Elements elem WHERE
elem.owner:=elemOwner", Elements.class);
query.setParameter("elemOwner", ownerObjectFetchFromDataBase);
List<TrendUsers> userList=query.getResultList();
但我得到以下错误: 不支持'BLOB'和'BLOB'之间的比较。类型必须具有可比性。字符串类型也必须具有匹配的排序规则。 如果排序规则不匹配,一个可能的解决方案是强制操作数强制它们到默认排序规则...
有没有什么办法可以从元素表中选择并在WHERE子句中使用对象(而不仅仅是String ,INT)?
(PS我也尝试下面的查询,并没有奏效: TypedQuery查询= em.createQuery( “SELECT FROM ELEM元素ELEM WHERE elem.owner.id:=elemOwner”,Elements.class); query.setParameter( “elemOwner”,ownerObjectFetchFromDataBase.id); 列表用户列表= query.getResultList(); )
感谢
并添加`的mappedBy = “所有者”``到elements`”`@ OneToMany`定义双向关系 – axtavt 2011-02-11 10:37:16