`
joknm
  • 浏览: 61929 次
  • 性别: Icon_minigender_1
  • 来自: 南宁
社区版块
存档分类
最新评论

大量数据访问时,用JPA 对象映射关系会出错?

    博客分类:
  • JAVA
阅读更多
昨天在做一JPA调试时出了些莫名其妙的错。
public class User
{
    @OneToMany
    @JoinColumn
    private List<Black> blackList = new ArrayList(); 
}


public class Black
{
    @Column
    private String name;
}

调试过程,添加black对象,通过user对象获取black对象,检测black是否与要添加的black对象相同,如果相同不添加,如果不相同则添加,在调试过程中以每秒20条的速度操作,出现的问题有:
2009-12-30 08:41:38 OALL8 处于不一致状态java.sql.SQLException: 违反协议
2009-12-30 08:41:38 Could not synchronize database state with session

网上说驱动问题,但是我从官网下载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也不行。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics