我试图找出:浏览器如何识别不同站点的登录表单?
无论我是否正在访问我的GMail帐户或某个个人项目,IE/Firefox总是知道该页面包含登录信息.
他们是否只是简单地搜索输入类型=密码或是否涉及一些cookie信息?
先感谢您.
菲利佩
好吧,我看到一些帖子几乎要问同样的事情但是点数有点不同.
这是一个经典案例:我正在保存/更新一个实体,并且在同一个会话中,我试图通过FlushMode = Auto从数据库中获取它们(使用criteria/find/enumerable/etc).问题是:NHibernate在查询之前没有刷新更新,所以我从数据库中获取了不一致的数据.
有些人会说,"足够公平",正如文件所述:
此过程刷新默认情况下发生在以下几点:
- 来自Find()或Enumerable()的一些调用
- 来自NHibernate.ITransaction.Commit()
- 来自ISession.Flush()
大胆的"一些调用"清楚地表明NH根本没有责任.但是,IMO在这里遇到了一致性问题,因为该文档还指出:
除非明确表示Flush(),否则绝对无法保证Session何时执行ADO.NET调用,只保证执行它们的顺序.但是,NHibernate确保ISession.Find(..)方法永远不会返回陈旧数据; 他们也不会返回错误的数据.
因此,如果我使用CreateQuery(查找替换)并过滤属性值为20的实体,NH可能不会返回值为30的实体,对吧?但这就是事实上发生的事情,因为Flush不应该自动发生.
public void FlushModeAutoTest()
{
ISession session = _sessionFactory.OpenSession();
session.FlushMode = FlushMode.Auto;
MappedEntity entity = new MappedEntity() { Name = "Entity", Value = 20 };
session.Save(entity);
entity.Value = 30;
session.SaveOrUpdate(entity);
// RETURNS ONE ENTITY, WHEN SHOULD RETURN ZERO
var list = session.CreateQuery("from MappedEntity where Value = 20").List<MappedEntity>();
session.Flush();
session.Close();
}
Run Code Online (Sandbox Code Playgroud)
毕竟:我错了,它是一个错误还是一个不可预测的功能所以每个人都必须打电话给Flush以确保它的工作?
谢谢.
菲利佩
我正在尝试使用NHibernate的事务控制和FlushMode选项来实现某种嵌套事务行为,但是在阅读太多之后事情变得有点混乱,所以我在下面列出的事实的任何确认都将非常有用.
我想要的是打开一个在小事务中分裂的大事务.想象一下以下场景:
我想看看NH将INSERT和TX2 UPDATE发送到数据库,只是忽略了回滚的TX3.
我尝试使用FlushMode = Never并且只在需要正确的Begins/Commits/Rollbacks之后才刷新会话,但NH总是使用对象的最终状态更新数据库,与提交和回滚无关.这是正常的吗?使用FlushMode = Never时NH是否真的忽略了事务控制?
我还尝试使用FlushMode = Commit并打开嵌套事务,但我发现,因为ADO.NET,嵌套事务实际上总是相同的事务.
请注意,我并不是想要实现"全有或全无"的行为.我正在寻找一种保存点的工作方式.NH有没有办法(保存点)?
先感谢您.
菲利佩
我正在尝试在Kettle中构建一个转换,从SQL Server存储过程中获取FIELDS并将其插入到MySql表中.
问题是我找不到获取存储过程"字段"的方法.我知道Call DB Procedure任务需要in/out params,而这不是我的情况,所以我试图使用以下SQL的"Execute SQL Statements":
exec credisfera.dbo.sp_insere_parcelas @dt_ref = '2016-05-03'
Run Code Online (Sandbox Code Playgroud)
有没有办法实现这个目标?
现在很明显,转换的所有步骤都是并行执行的,并且在 Pentaho 中无法改变这种行为。
鉴于此,我们有一个切换任务的场景,它检查特定字段(从文件名读取)并决定哪个任务(映射 - 子转换)将处理该文件。这是通用逻辑的一部分,在每个映射任务之前和之后,执行一些样板任务,如更新数据库记录、发送电子邮件等。
问题是:如果我们没有“ACCC014”文件,则无法执行此转换。我知道这是不可能的,因为所有任务都是并行执行的,所以出现了第二个问题:在一些映射中,创建了 XML 文件。甚至当 Pentaho 使用空数据执行此任务时,我们也无法找到避免创建 XML 输出文件的方法。
我们考虑将这个 switch 逻辑移到工作中,因为理论上它是串行的,但发现没有条件步骤可以进行这种区分。
我们还研究了元数据注入任务,但我们不认为这是可行的方法。每个子转换执行真正不同的工作。其中一些更新一些表,一些写入文件,另一些在不同的数据库之间移动数据。它们都接收一些文件作为输入并返回一个 send_email 标志和一个消息字符串。没有其他的。
有没有办法做我们愿意做的事情?或者没有办法根据默认输入/输出重用部分逻辑?
编辑:添加 ACCC014 转换。是的,选中了“开始时不创建文件”选项。
我们有一个使用 Drools 6.5 的正在运行的项目,并希望将其迁移到 7.0。
更改Drools依赖版本并运行项目时,抛出以下异常:
All accumulate functions must be registered before building a resourceUnknown accumulate function: 'countDistinct' on rule 'IPCPF001'. All accumulate functions must be registered before building a resource. : [Accumulate: input=[AND [[Pattern: id=null; objectType=MyFact]] ]]
Run Code Online (Sandbox Code Playgroud)
我们使用累加函数,它们在 META-INF/drools.packagebuilder.conf 文件中正确注册。7.0 版本有什么变化吗?
kettle ×2
nhibernate ×2
pentaho ×2
browser ×1
drools ×1
html ×1
login ×1
pdi ×1
savepoints ×1
transactions ×1