小编jfn*_*eis的帖子

浏览器如何识别登录表单?

我试图找出:浏览器如何识别不同站点的登录表单?

无论我是否正在访问我的GMail帐户或某个个人项目,IE/Firefox总是知道该页面包含登录信息.

他们是否只是简单地搜索输入类型=密码或是否涉及一些cookie信息?

先感谢您.

菲利佩

html browser login

8
推荐指数
2
解决办法
1850
查看次数

NHibernate FlushMode自动不会在查找之前刷新

好吧,我看到一些帖子几乎要问同样的事情但是点数有点不同.

这是一个经典案例:我正在保存/更新一个实体,并且在同一个会话中,我试图通过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

6
推荐指数
1
解决办法
4934
查看次数

实现NHibernate嵌套事务行为

我正在尝试使用NHibernate的事务控制和FlushMode选项来实现某种嵌套事务行为,但是在阅读太多之后事情变得有点混乱,所以我在下面列出的事实的任何确认都将非常有用.

我想要的是打开一个在小事务中分裂的大事务.想象一下以下场景:

  • TX1打开一个TX并插入一个Person的记录;
  • TX2打开TX并将此人的姓名更新为P2;
  • TX2提交;
  • TX3打开TX并将此人的姓名更新为P3;
  • TX3回滚;
  • TX1提交;

我想看看NH将INSERT和TX2 UPDATE发送到数据库,只是忽略了回滚的TX3.

我尝试使用FlushMode = Never并且只在需要正确的Begins/Commits/Rollbacks之后才刷新会话,但NH总是使用对象的最终状态更新数据库,与提交和回滚无关.这是正常的吗?使用FlushMode = Never时NH是否真的忽略了事务控制?

我还尝试使用FlushMode = Commit并打开嵌套事务,但我发现,因为ADO.NET,嵌套事务实际上总是相同的事务.

请注意,我并不是想要实现"全有或全无"的行为.我正在寻找一种保存点的工作方式.NH有没有办法(保存点)?

先感谢您.

菲利佩

nhibernate transactions nested-transactions savepoints

4
推荐指数
1
解决办法
3596
查看次数

从SQL Server存储过程获取字段

我正在尝试在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 kettle pentaho-spoon

3
推荐指数
1
解决办法
1490
查看次数

PDI/Kettle:避免文件创建或映射(子转换)执行

现在很明显,转换的所有步骤都是并行执行的,并且在 Pentaho 中无法改变这种行为。

鉴于此,我们有一个切换任务的场景,它检查特定字段(从文件名读取)并决定哪个任务(映射 - 子转换)将处理该文件。这是通用逻辑的一部分,在每个映射任务之前和之后,执行一些样板任务,如更新数据库记录、发送电子邮件等。

切换任务 问题是:如果我们没有“ACCC014”文件,则无法执行此转换。我知道这是不可能的,因为所有任务都是并行执行的,所以出现了第二个问题:在一些映射中,创建了 XML 文件。甚至当 Pentaho 使用空数据执行此任务时,我们也无法找到避免创建 XML 输出文件的方法。

我们考虑将这个 switch 逻辑移到工作中,因为理论上它是串行的,但发现没有条件步骤可以进行这种区分。

我们还研究了元数据注入任务,但我们不认为这是可行的方法。每个子转换执行真正不同的工作。其中一些更新一些表,一些写入文件,另一些在不同的数据库之间移动数据。它们都接收一些文件作为输入并返回一个 send_email 标志和一个消息字符串。没有其他的。

有没有办法做我们愿意做的事情?或者没有办法根据默认输入/输出重用部分逻辑?

编辑:添加 ACCC014 转换。是的,选中了“开始时不创建文件”选项。

在此处输入图片说明

pentaho kettle pdi pentaho-spoon pentaho-data-integration

2
推荐指数
1
解决办法
1632
查看次数

Drools 7.0:在构建资源之前必须注册所有累加函数

我们有一个使用 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 版本有什么变化吗?

drools

0
推荐指数
1
解决办法
350
查看次数