目标是在发生故障时回滚所有/任何事务.但这并不像预期的那样有效.
我们使用Spring MVC + JMS + Service + Mybatis.在日志中,JMS设置为回滚,但是插入行而不是回滚.想知道我错过了什么或做错了什么?
最近添加了@Transactional标记.所以不确定它是否按预期工作.
码:
服务类别:
@Transactional(value = "transactionManager", propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public class DataExchangeLogic implements DataExchangeService {
private DataExchDao dataExchDao;
...
@Override
public void save(DataExch dataExch) throws ValidationException {
if (dataExch.getId() != null && dataExch.getId() > 0) {
this.dataExchDao.update(dataExch);
} else {
//LOGGER.debug("in insert::");
this.dataExchDao.create(dataExch);
//Empty exception throw to test rollback
throw new RuntimeException();
}
}
}
Run Code Online (Sandbox Code Playgroud)
DAO:
public interface DataExchDaoMybatis
extends NotificationDao {
void create(DataExch dataExch);
}
Run Code Online (Sandbox Code Playgroud)
春天语境
<bean …Run Code Online (Sandbox Code Playgroud) 很抱歉再问这个问题.如果我做对了,请告诉我?
我们有一个父pom和多个模块.现在,如果所有子项目都想继承相同的jar文件(例如spring),我可以将它们放在父项目pom中,不需要将它们包含在子pom中.
如果我在父pom中放入依赖项,它们不会包含在所有子项目中,但我可以通过添加它们来包含我需要的那些(例如测试),而无需指定版本.
这是对的还是我完全不对?希望我清楚我的q.
我需要的只是一个拥有所有依赖关系的巨型父pom.孩子们应该自动获得一些常见的依赖关系以及每个孩子需要的特定依赖关系.
谢谢
哈里什
我们有多个交易经理(WebsphereUOWTransactionManager和DatasourceTransactionManager)并使用Mybatis和NamedParameterJdbcTemplate(遗留代码)
用于工作的代码和所做的更改将转移@Transactional到服务级别并sqlsession.commit从mybatis代码中删除.
但是现在存在JdbcTemplate执行遗留代码()的问题.
错误是
20170427 19:22:02.045 [SimpleThreadPoolWorker-2] DEBUG o.s.b.c.r.d.JdbcStepExecutionDao # Truncating long message before update of StepExecution, original message is: org.springframework.jdbc.UncategorizedSQLException: PreparedStatementCallback; uncategorized SQLException for SQL [
UPDATE JOB_RUN
SET SYS_RUN_STUS_CD = ?,
UPDT_USER_ID = 'SYSTEM',
REC_UPDT_TS = CURRENT_TIMESTAMP
WHERE JOB_RUN_ID = ?
]; SQL state [null]; error code [0]; enlist: caught Exception; nested exception is java.sql.SQLException: enlist: caught Exception
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:84)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:660) …Run Code Online (Sandbox Code Playgroud) spring transactional jdbctemplate spring-transactions mybatis
我只能从表中获得几个列值.所以我使用Projections来实现这一目标.代码有效,但我认为它没有效果.
我的问题是当我使用ProjectionsList然后将criteria.list设置为ArrayList时 - Bulletin对象为null.我不确定如何更好地解释这一点.所以我会把代码放进去,请阅读下面的内容:
List<Bulletin> list = new ArrayList<Bulletin>();
BulletinList bulletinList = null;
Criteria criteria = null;
criteria = this.getSession().createCriteria(Bulletin.class)
.setProjection(Projections.projectionList()
.add(Projections.property(bulletinIdAttr))
.add(Projections.property(docNameAttr))
.add(Projections.property(docTypeCodeAttr))
);
criteria.addOrder(Order.desc(createdTimeAttr));
List<Object> rows = criteria.list();
for (Object r : rows) {
Object[] row = (Object[]) r;
Bulletin bull = new Bulletin();
bull.setBulletinId((Long) row[0]);
bull.setDocumentName((String) row[1]);
bull.setDocumentTypeCode((String) row[2]);
list.add(bull);
}
bulletinList = new BulletinList();
bulletinList.setBulletins(list);
return bulletinList;
Run Code Online (Sandbox Code Playgroud)
我只需要将criteria.list设置为BulletinList(包含Bulletin对象列表的类).但是当我使用投影时,Bulletin对象为null.
我也在阅读另一个使用的线程
setResultTransformer(Transformers.aliasToBean
Run Code Online (Sandbox Code Playgroud)
但这也不起作用.所以有人可以帮助解决如何使代码更好的问题.
谢谢
哈里什
我有一个ArrayList:
Arraylist<Person> list1 = new ArrayList<Person>();
list1.add(new Person("John", 0));
list1.add(new Person("Kane", 0));
list1.add(new Person("Jen", 0));
Run Code Online (Sandbox Code Playgroud)
而另一个ArrayList:
Arraylist<Person> list2 = new ArrayList<Person>();
list2.add(new Person("John", 2));
list2.add(new Person("Kane", 4));
Run Code Online (Sandbox Code Playgroud)
我希望结果ArrayList包含:
("John", 2) ("Kane", 4) ("Jen", 0)
Run Code Online (Sandbox Code Playgroud)
我想合并这两个列表并删除值为0的列表.如果我这样做
list2.addAll(list1),那么list2有两个条目为"John",值为2和0.我想删除值为0的条目名单.
嗨在数据库中,我们有一个PRSN_ADDRESS表,它有许多地址.用户在网格中显示这些地址.要求是首先显示与此用户的状态关联的地址,然后显示所有其他状态.
例如,假设该表有10条记录,其中5条地址的状态为马里兰州,2条来自PA,3条来自新泽西州.现在,如果用户与马里兰州相关联,我们需要显示所有10个地址,但马里兰州地址应该显示在前五个地址中,然后其他5个地址显示在任何顺序中.
我们正在使用Hibernate Criteria.我还没有参加过Formulas,也不确定这是否有助于解决问题.如果有人能指出我正确的方向,那将是很棒的.我很感激.
谢谢
哈里什
我们有一个需要按日期搜索的搜索实用程序:
所以我在搜索字段中输入日期"04-20-1982".在代码中:
Alert.show("string date::"+message.searchKeyword);
dateOfBirth = DateField.stringToDate(message.searchKeyword,"MM-DD-YYYY");
Alert.show("date::"+dateOfBirth);
Run Code Online (Sandbox Code Playgroud)
第一个警报打印为字符串日期:: 04-20-1982
第二个警报打印为日期:: Tue Apr 20 00:00:00 GMT-0400 1982
问题是我们的时区是美国东部时间,因为它改为格林威治标准时间-400,它需要的时间为1998年4月19日23:00:00,并且不会返回任何结果.DB中的实际DOB是1982年4月20日.
所以请告诉我如何避免转换为GMT -400时区,并将其作为没有任何时区的日期发送.
谢谢
哈里什
criteria ×2
hibernate ×2
mybatis ×2
spring ×2
apache-flex ×1
arraylist ×1
date ×1
dependencies ×1
formula ×1
java ×1
jdbctemplate ×1
maven ×1
projection ×1
spring-jms ×1
timezone ×1
transactions ×1