jpa使用WHERE子句
我有两个实体:jpa使用WHERE子句,jpa,one-to-many,Jpa,One To Many,我有两个实体: @Entity public class Elements implements Serializable { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; private Owner owner; } @Entity public class Owner implements Serializable { @Id @GeneratedValu
@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;
}
@实体
公共类元素实现可序列化{
@身份证
@GeneratedValue(策略=GenerationType.AUTO)
私人长id;
私人业主;
}
@实体
公共类所有者实现可序列化{
@身份证
@GeneratedValue(策略=GenerationType.AUTO)
私人长id;
@OneToMany(fetch=FetchType.LAZY)
列出要素;
}
假设我想从Elements表中获取所有与所有者相关的elemets,然后使用:
TypedQuery query=em.createQuery("SELECT elem FROM Elements elem WHERE
elem.owner:=elemOwner", Elements.class);
query.setParameter("elemOwner", ownerObjectFetchFromDataBase);
List<TrendUsers> userList=query.getResultList();
TypedQuery query=em.createQuery(“从元素elem中选择元素elem
元素所有者:=elemOwner“,Elements.class);
setParameter(“elemOwner”,ownerObjectFetchFromDataBase);
List userList=query.getResultList();
但我得到了以下错误:
不支持“BLOB”和“BLOB”之间的比较。类型必须具有可比性。字符串类型还必须具有匹配的排序规则。
如果排序规则不匹配,一种可能的解决方案是强制转换操作数,使其成为默认排序规则
有什么方法可以从Elements表和WHERE子句中选择使用object(而不仅仅是String,int…)
(p.s.我也尝试了下面的查询,但没有成功:
TypedQuery query=em.createQuery(“从Elements elem中选择elem,其中elem.owner.id:=elemOwner”,Elements.class”);
setParameter(“elemOwner”,ownerObjectFetchFromDataBase.id);
List userList=query.getResultList();
)
谢谢您需要将所有者标记为als a
@实体公共类元素实现可序列化{
剪
@manytone(fetch=FetchType.LAZY)
@JoinColumn(name=“OWNER\u ID”)
私人业主;
}
@实体公共类所有者实现可序列化{
剪
@OneToMany(fetch=FetchType.LAZY,mappedBy=“owner”)
列出要素;
}
现在,您尝试将序列化的所有者存储在Blob中。这不是你想要的;-)
享受
编辑:包含xatavt的修复程序您需要将所有者标记为als a
@实体公共类元素实现可序列化{
剪
@manytone(fetch=FetchType.LAZY)
@JoinColumn(name=“OWNER\u ID”)
私人业主;
}
@实体公共类所有者实现可序列化{
剪
@OneToMany(fetch=FetchType.LAZY,mappedBy=“owner”)
列出要素;
}
现在,您尝试将序列化的所有者存储在Blob中。这不是你想要的;-)
享受
编辑:包括Xtavt的修复,并将
mappedBy=“owner”
添加到元素
“@OneToMany
以定义双向relationship@axtavt:说得好。谢谢我将更新我的帖子,将其包括在内,并将mappedBy=“owner”
添加到元素@OneToMany
,以定义双向relationship@axtavt:说得好。谢谢我会更新我的帖子,包括这一点
@Entity public class Elements implements Serializable {
...snip ...
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="OWNER_ID")
private Owner owner;
}
@Entity public class Owner implements Serializable {
.. snip ...
@OneToMany(fetch=FetchType.LAZY, mappedBy="owner")
List<Elements> elements;
}