我的应用程序包含多个并发运行的线程,所有线程都插入或更新表中的多行,因此我使用saveOrUpdate()来避免重复条目问题。但这种情况发生过好几次。
我的表结构
CREATE TABLE `question` (`id` varchar(100) CHARACTER SET latin1 NOT NULL COMMENT 'It will be the post_id in )
<class name="com.xminds.bestfriend.frontend.model.Question" table="question" >
<id name="id" type="string">
<column name="id" length="100" />
<generator class="assigned" />
</id>
<many-to-one name="users" class="com.xminds.bestfriend.frontend.model.Users" fetch="select">
<column name="answer_uid" />
</many-to-one>
<many-to-one name="questionType" class="com.xminds.bestfriend.frontend.model.QuestionType" fetch="select">
<column name="question_type_id" />
</many-to-one>
<property name="data1" type="string">
<column name="data1" length="65535" />
</property>
<property name="data2" type="string">
<column name="data2" length="65535" />
</property>
<property name="fbCreatedDate" type="timestamp">
<column name="fb_created_date" length="19" />
</property>
<property name="permaLink" type="string">
<column name="perma_link" length="1000" />
</property>
<property name="fbUpdatedDate" type="timestamp">
<column name="fb_updated_date" length="19" />
</property>
<property name="contentActivity" type="java.lang.Integer">
<column name="content_activity" />
</property>
<property name="nbConsumptions" type="int">
<column name="nb_consumptions" not-null="true" />
</property>
<property name="createdDate" type="date">
<column name="created_date" length="10" />
</property>
<property name="updatedDate" type="date">
<column name="updated_date" length="10" />
</property>
<property name="cover_url" type="string">
<column name="cover_url" length="1000"/>
</property>
<property name="category" type="string">
<column name="category" length="1000"/>
</property>
<property name="width" type="int">
<column name="width" not-null="true" />
</property>
<property name="height" type="int">
<column name="height" not-null="true" />
</property>
<property name="coverOffsetX" type="java.lang.Integer">
<column name="cover_offset_x" />
</property>
<property name="coverOffsetY" type="java.lang.Integer">
<column name="cover_offset_y" />
</property>
<property name="latitude" type="java.lang.Double">
<column name="latitude" precision="12" scale="0" />
</property>
<property name="longitude" type="java.lang.Double">
<column name="longitude" precision="12" scale="0" />
</property>
<property name="is_active" type="boolean">
<column name="is_active" not-null="true" />
</property>
<set name="questionConsumptions" inverse="true">
<key>
<column name="question_id" length="100" not-null="true">
<comment>QuestionId</comment>
</column>
</key>
<one-to-many class="com.xminds.bestfriend.frontend.model.QuestionConsumption" />
</set>
</class>
正在获取异常
WARN JDBCExceptionReporter - SQL Error: 1062, SQLState: 23000
@Override
public void saveOrUpdate(Object instance)
{
//log.debug("attaching dirty instance");
try
{
getHibernateTemplate().saveOrUpdate(instance);
//log.debug("attach successful");
}
catch (RuntimeException re)
{
// log.error("attach failed", re);
throw re;
}
}
您说,“我的应用程序包含几个并发运行的线程,所有线程要么插入或更新表中的几行”。并且您正在手动设置ID。我想知道,你正在为你的线程设置的ID,你是如何获得它们的?
Powermock为什么不模拟静态方法调用,而是在然后()语句中调用初始方法? 在这种情况下,我有一系列方法调用: TestClass方法-调用- Class4方法尝试查找上下文中不存在且挂起的对象,因此我尝试使用Powermock模拟公共静态Class3方法。 所有的类和方法都是非最终的。我使用TestNg。我的测试方法有一个@准备测试我尝试了以下方法来模拟方法调用: 或而不是当-然后返回: 或
问题内容: 在JPA中,有什么方法可以复制Hibernate的saveOrUpdate行为, 它实质上检查数据库中是否已存在该对象,并根据需要更新该对象或保存该对象的新实例。 JPA无事务读取很不错,但是Hibernate确实缺少这种方法。有经验的JPA开发人员如何处理此问题? 问题答案: 尝试使用该方法-这非常相似。 Xebia的博客文章中对差异有一个很好的描述:“ JPA实施模式:保存(独立)
假设aClassC是一个ClassC实例,运行以下行: 在此之后,将为ClassA、ClassB和ClassC运行三个update语句(这是预期的)。 我没有想到的是,一个表上的delete语句并不是这样存在的: 埃塞克斯男孩的回答帮我解决了问题。实体非常复杂,有人添加了一个我没有注意到的一对多关联的列表。我仍然不明白为什么在更新过程中需要一个delete语句,但我将暂且不提这个问题:)
我用java编写Rational类来做基本的数学运算,我想覆盖Number类和Comparable接口的方法。我这样做是为了双倍的价值 正如我们所知,BigInteger类也扩展了数字类,所以我对在doubleValue中调用哪个方法感到困惑,因为我已经覆盖了doubleValue
我在冬眠中面临一个奇怪的问题。在多线程环境中操作,当尝试插入到其中一个表中时,在表中获得重复的条目。只有主键不同,其余所有其他字段都是完全重复的。 使用Hibernate+Oracle和使用Spring-HibernateTemplate对象。 下面是我的BO类的相关部分,以及下面给出的保存对象的代码。不使用任何瞬态场。 我已经检查了与此相关的其他帖子,但没有一篇针对问题的根本原因。我不想在db表
问题检测到端口3306M被C程序文件使用(x86)MySQL MySQL Server 5.0ibinimysqld如果没有配置的空闲端口,MySQL将无法启动! 您需要卸载/禁用/重新配置阻塞应用程序 或重新配置MySQL和控制面板以侦听不同的端口