我的应用程序基于Hibernate 3.2和Spring 2.5.以下是应用程序上下文中与事务管理相关的代码段:
<tx:annotation-driven transaction-manager="txManager"/>
<bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"/>
<property name="nestedTransactionAllowed" value="true"/>
</bean>
<bean id="transactionTemplate" classs="org.springframework.transaction.support.TransactionTemplate">
<property name="transactionManager" ref="txManager"/>
</bean>
<bean class="org.springframework.beans.factory.annotation.RequiredAnnotationBeanPostProcessor"/>
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="configLocation" value="classpath:/hibernate.cfg.xml"></property>
</bean>
Run Code Online (Sandbox Code Playgroud)
对于所有DAO,都有相关的Service类,并且使用@Transactional服务层中的每个方法处理事务.但是现在有一个场景,DAO中的方法说服务层调用"parse()".在我指定的服务层中@Transactional(readOnly=false).DAO中的这个解析方法在同一个DAO中调用另一个方法说"save()",它在数据库中存储了大量的行(大约5000个).现在,在解析函数的循环中调用save方法.现在的问题是,在大约100次调用"保存"方法之后..我有时会得到OutOfMemory异常或有时程序停止响应.
现在这些是我对save方法所做的更改:
Session session = getHibernateTemplate().getSessionFactory().openSession();
Transaction tx = session.beginTransaction();
int counter = 0;
if(books!=null && !books.isEmpty()){
for (Iterator iterator = books.iterator(); iterator
.hasNext();) {
Book book = (Book) iterator.next();
session.save(book);
counter++;
if(counter % 20==0) {
session.flush();
session.clear();
}
}
}
tx.commit();
session.close();
Run Code Online (Sandbox Code Playgroud)
这是我的应用程序中唯一的方法,我开始这样的事务并在方法结束时提交它.否则我通常只是打电话getHibernateTemplate.save() …
我在CodeIgniter中运行一个小方法来在数据库中插入一些行(同一个表).我想看看在事务中哪个插入失败(通过返回标题数组).我的代码是:
$failure = array(); //the array where we store what failed
$this->db->trans_start();
foreach ($data as $ressourceCsv){ //data is an array of arrays to feed the database
$this->ajout_ressource($ressourceCsv); //method to insert (basically, just an insert with active record)
if (($this->db->_error_message())!=null) {
$failure[] = $ressourceCsv['title'];
}
}
$this->db->trans_complete();
return $failure;
Run Code Online (Sandbox Code Playgroud)
事实是,如果我不使它成为一个事务(没有$ this-> db-> trans _...),它完美地工作,我有一个包含几个标题的数组.但是对于事务,数组包含自第一个错误以来的所有标题.有没有办法从插入中获取导致事务回滚的标题?
我也尝试过:
$failure = array(); //the array where we store what failed
$this->db->trans_start();
foreach ($data as $ressourceCsv){ //data is an array of arrays to feed the database
if …Run Code Online (Sandbox Code Playgroud) 是否可以定义静态插入操作符,该操作符仅对类的静态成员进行操作?就像是:
class MyClass
{
public:
static std::string msg;
static MyClass& operator<< (const std::string& token) {
msg.append(token);
return *this; // error, static
}
};
Run Code Online (Sandbox Code Playgroud)
或者:
static MyClass& operator<< (MyClass&, const std::string &token)
{
MyClass::msg.append(token);
return ?;
}
Run Code Online (Sandbox Code Playgroud)
这就是我想用它的方式:
MyClass << "message1" << "message2";
Run Code Online (Sandbox Code Playgroud)
谢谢!
我已经通读了运算符<<被实现为朋友还是作为成员函数?和C++中的重载插入运算符看起来像是类似的问题,但没有解决我自己的问题.
我的头文件:
using namespace std;
class Animal {
private:
friend ostream & operator<< (ostream & o, Dog & d);
int number;
public:
Animal(int i);
int getnumber();
};
ostream & operator<< (ostream & o, Dog & d);
Run Code Online (Sandbox Code Playgroud)
我的cpp:
using namespace std;
int Animal::getnumber(){
return number;
}
ostream & Animal::operator<< (ostream & o, Dog & d){
//...
}
Animal::Animal(int i) : number(i){}
Run Code Online (Sandbox Code Playgroud)
实现很简单,但我收到错误:在cpp中 - 错误:类"Animal"类没有成员"operator <<".我真的没有得到它,因为我已经在Animal中将插入操作符声明为朋友,为什么我仍然会收到此错误?(把ostream放在公共场合并没有帮助)
我需要从一个表中随机选择值,例如tableA.a_ida VARCHAR2,并使用该值插入另一个表中.例如,假设需要将三列插入100行tableX(序列号,100到999之间的随机数,以及值tableA.a_id):
insert into tableX
select
rownum,
dbms_random.value(100,999), 0),
(select a_id from
(
SELECT a_id
FROM tableA
ORDER BY dbms_random.value
)
where rownum = 1)
from
(select level from dual connect by level <= 100);
Run Code Online (Sandbox Code Playgroud)
但是,不是从tableA.a_id每行中选择一个随机行,而是为所有行选择相同的值,例如:
1 129 A-ID-48
2 849 A-ID-48
3 367 A-ID-48
Run Code Online (Sandbox Code Playgroud)
但是,如果我重复执行子查询,每次都会得到一个新值(原因很明显),例如:
select a_id from
(
SELECT a_id
FROM tableA
ORDER BY dbms_random.value
)
where rownum = 1;
Run Code Online (Sandbox Code Playgroud)
结果将在每次执行后:
A-ID-7
A-ID-48
A-ID-74
Run Code Online (Sandbox Code Playgroud)
如何改变原来的查询,或拿出一个新的对于这个问题,这将来自随机行中插入tableA的 …
在文本文件中,我想使用perl在另一行文本的每个匹配之前插入一行新文本.
示例 - 我的文件是:
holiday
april
icecream: sunday
jujubee
carefree
icecream: sunday
Christmas
icecream: sunday
towel
...
Run Code Online (Sandbox Code Playgroud)
我想'icecream: saturday'在' icecream: sunday'行之前插入一行文本.所以之后,文本文件看起来像.是的,我需要结肠:在搜索和替换模式中都.
holiday
april
icecream: saturday
icecream: sunday
jujubee
carefree
icecream: saturday
icecream: sunday
Christmas
icecream: saturday
icecream: sunday
towel
...
Run Code Online (Sandbox Code Playgroud)
我想在Windows PC上使用perl 5.14来做这件事.我已经安装了Perl.我在这个网站上搜索并尝试了很多其他的例子,但它们并不适合我,不幸的是我不是Perl的完整专家.
如果有一个例子也使用sed我也有Cygwin sed.
我想用一个(在运行时已知)数据量填充向量,但元素到达(索引,值)对而不是原始顺序.这些索引保证是唯一的(每个索引从0到n-1只出现一次)所以我想将它们存储如下:
vector<Foo> myVector;
myVector.reserve(n); //total size of data is known
myVector[i_0] = v_0; //data v_0 goes at index i_0 (not necessarily 0)
...
myVector[i_n_minus_1] = v_n_minus_1;
Run Code Online (Sandbox Code Playgroud)
这似乎在大多数情况下都能正常工作; 在代码的末尾,所有n个元素都在向量中的适当位置.但是,某些向量函数不能按预期工作:
...
cout << myVector.size(); //prints 0, not n!
Run Code Online (Sandbox Code Playgroud)
对我来说重要的是功能size()仍然有效 - 我可能想检查一下,如果通过检查是否所有元素实际插入成功size() == n.我是否错误地初始化了向量,如果是这样,我该如何处理呢?
我在其他元素中间插入一个新的 div 元素,我希望其他元素以流畅的方式移动到新位置,而不是像目前这样突然移动。
这是我的代码:https : //codepen.io/BigEiffelTower/pen/vYBgqZq
<div id="top">
Top of the page
</div>
<div id="middle">
</div>
<div id="bottom">
<form>
<input type="button" value="Add an element">
</form>
End of the page
</div>
Run Code Online (Sandbox Code Playgroud)
#top, #middle, #bottom {
font-size: 1.5em;
border: 2px solid black;
margin: 0.3em
transition: all 2s ease;
}
Run Code Online (Sandbox Code Playgroud)
var btn = document.querySelector('input');
btn.addEventListener('click', updateBtn);
function updateBtn() {
$el = $("<div>", {
id: 'middle-item',
text: "New element"
});
$("#middle").append($el);
}
Run Code Online (Sandbox Code Playgroud)
单击按钮时如何使#three 元素平滑移动?