一个简单的 spring 服务,具有插入并在插入后抛出运行时异常的方法。运行时异常应该导致回滚。
@Transactional()
public void insertAndThrowRuntimeEx() {
Order order = new Order();
entityManager.persist(order);
throw new RuntimeException("Unexpected runtime exception");
}
Run Code Online (Sandbox Code Playgroud)
仅当我使用以下命令配置 dataSource 时,回滚才会正确显示:
<jdbc:embedded-database id="dataSource" type="H2" /> <!-- with this configuration there is correct rollback -->
Run Code Online (Sandbox Code Playgroud)
但是当我在独立模式下使用数据库时,没有回滚,或者回滚无效:
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" <!-- here inserted record remains in database -->
p:driverClassName="org.h2.Driver" p:url="jdbc:h2:tcp://localhost/databases/test1"
p:username="sa" p:password="" />
Run Code Online (Sandbox Code Playgroud)
为什么事务回滚可以在 H2 嵌入式数据库模式下正常工作,而在服务器模式下不能正常工作?
ps,还配置了事务管理器
@Bean
public PlatformTransactionManager transactionManager() {
JpaTransactionManager manager = new JpaTransactionManager( localContainerEntityManagerFactoryBean().getObject() );
return manager;
}
<tx:annotation-driven transaction-manager="transactionManager" />
Run Code Online (Sandbox Code Playgroud)
spring 调试日志说事务已回滚:
现在抛出运行时异常
2014-07-03 20:02:05,965 …Run Code Online (Sandbox Code Playgroud) 我有一个这样的 Java 类,想使用 Jackson 转换为 JSON。谢谢你的帮助。
public class myClass {
String Id;
Map<String, Object> optionalData = new LinkedHashMap<String, Object>();
}
Run Code Online (Sandbox Code Playgroud)例如,假设optionalData是一个保存两个条目的 Map <"type", "book">,<"year", "2014">
我希望输出如下。请注意,optionalData 的键/值可以动态更改(因此,如果不使用 Map,我无法为此创建“静态”Java 对象)
[
{
id: "book-id1",
type: "book",
year: "2014"
},
{
id: "book-id2",
type: "book",
year: "2013"
}
]
Run Code Online (Sandbox Code Playgroud) 有以下国家选项列表并且显示的文本都是大写的;
<select id="countrySelect"..>
<option value="SG">Singapore</option>
<option value="JP">Japan</option>
...
</select>
Run Code Online (Sandbox Code Playgroud)
这些所有显示文本如何像SINGAPORE , JAPAN一样大写等一样大写?
任何JQuery一种CSS方式都值得赞赏,哪一种更好?