我们正在使用CDI与CMT(容器管理事务)连接到Web应用程序中的数据库,并标记从前端调用的需要事务的方法:
@Transactional(value=TxType.REQUIRES_NEW)
Run Code Online (Sandbox Code Playgroud)
这将创建一个新的CDI事务,但是现在如果执行此代码块或从此方法调用的任何其他代码块发生异常,它将抛出错误消息:
javax.transaction.TransactionalException: Managed bean with Transactional annotation and TxType of REQUIRES_NEW encountered exception during commit javax.transaction.RollbackException: Transaction marked for rollback.
...
Caused by: javax.transaction.TransactionalException: Managed bean with Transactional annotation and TxType of REQUIRES_NEW encountered exception during commit javax.transaction.RollbackException: Transaction marked for rollback.
...
Caused by: javax.transaction.RollbackException: Transaction marked for rollback.
Run Code Online (Sandbox Code Playgroud)
无论如何让CDI重新抛出嵌套错误,以便您可以轻松调试回滚的真正原因是什么?
(在Java-EE7上运行,Glassfish 4.0,JSF 2.2.2)
当会话超时时,我试图让JSF Web前端重定向回到登录页面(在Spring Security中).
我尝试过使用元刷新方法,但这会导致不希望的副作用,即当页面上只使用AJAX控件时,元刷新时间不会更新.这意味着页面可能会在您仍在使用时刷新,因为您尚未转换到另一个页面并且只对服务器进行了AJAX调用.我还没有找到一种方法来使用Primefaces轻松改变这种行为.
当会话过期时,Spring Security会向Primefaces发送302 HTTP错误消息,但Primefaces会忽略重定向请求.您可以判断会话何时到期,因为Primefaces控件因其AJAX调用未成功而停止响应.
我使用的是Primefaces 3.4.2,以及在Glassfish 3.1.2.2上运行的Spring Security 3.1.4.
我有以下声明性SQL类:
class Test(Base):
ID = Column(Integer, primary_key=True)
SYSTEM_TIMESTAMP = Column(DateTime, nullable=False, server_default='GETDATE()')
Run Code Online (Sandbox Code Playgroud)
但是使用Base.metadata.create_all(engine)会导致为SYSTEM_TIMESTAMP发出以下SQL:
[SYSTEM_TIMESTAMP] DATETIME NOT NULL DEFAULT 'GETDATE()',
Run Code Online (Sandbox Code Playgroud)
有关如何从http://www.w3schools.com/sql/func_getdate.asp发出GETDATE的示例:
OrderDate datetime NOT NULL DEFAULT GETDATE()
Run Code Online (Sandbox Code Playgroud)
我尝试使用func.getdate而不是'GETDATE()'作为server_default,但是得到以下错误:
ArgumentError: Argument 'arg' is expected to be one of type '<type 'basestring'>' or
'<class 'sqlalchemy.sql.expression. ClauseElement'>' or
'<class 'sqlalchemy.sql.expression.TextClause'>',
got '<class 'sqlalchemy.sql.expression._FunctionGenerator'>'
Run Code Online (Sandbox Code Playgroud)
SQLAlchemy版本:0.9.6 Pyodbc版本:3.0.5 Python版本:2.7
如何让SQLAlchemy发出以纠正SQL以设置服务器默认值?
ajax ×1
cdi ×1
java ×1
java-ee ×1
jsf-2 ×1
primefaces ×1
python ×1
sql-server ×1
sqlalchemy ×1
transactions ×1