昨天在做一JPA调试时出了些莫名其妙的错。
调试过程,添加black对象,通过user对象获取black对象,检测black是否与要添加的black对象相同,如果相同不添加,如果不相同则添加,在调试过程中以每秒20条的速度操作,出现的问题有:
[color=red]2009-12-30 08:41:38 OALL8 处于不一致状态[/color][color=red]java.sql.SQLException: 违反协议[/color]
[color=red]2009-12-30 08:41:38 Could not synchronize database state with session[/color]
网上说驱动问题,但是我从官网下载ojbc14也不行。
后来取消映射关系,问题解决了!
JPA WHERE IN 的用例:
(:collection) 用问号会出问题,而且它对象的值必须要为:collection 对象。
网上说驱动问题,但是我从官网下载ojbc14也不行。
public class User
{
@OneToMany
@JoinColumn
private List<Black> blackList = new ArrayList();
}
public class Black
{
@Column
private String name;
}
调试过程,添加black对象,通过user对象获取black对象,检测black是否与要添加的black对象相同,如果相同不添加,如果不相同则添加,在调试过程中以每秒20条的速度操作,出现的问题有:
[color=red]2009-12-30 08:41:38 OALL8 处于不一致状态[/color][color=red]java.sql.SQLException: 违反协议[/color]
[color=red]2009-12-30 08:41:38 Could not synchronize database state with session[/color]
网上说驱动问题,但是我从官网下载ojbc14也不行。
后来取消映射关系,问题解决了!
JPA WHERE IN 的用例:
@Override
public void delete(long userId, String[] phoneList)
{
List list = new ArrayList();
for (String phone : phoneList)
{
list.add(phone);
}
String hql = "Delete From Black where userid=? and phone In (:collection)";
Query q = em.createQuery(hql);
q.setParameter(1, userId);
q.setParameter("collection", list);
q.executeUpdate();
}
(:collection) 用问号会出问题,而且它对象的值必须要为:collection 对象。
网上说驱动问题,但是我从官网下载ojbc14也不行。
本文记录了在使用JPA进行高频率数据操作时遇到的问题及解决方案,包括违反协议的SQLException错误、数据库状态同步失败等问题,并给出了具体的解决办法。

590

被折叠的 条评论
为什么被折叠?



