小编Jam*_*len的帖子

何时在NHibernate/Hibernate OneToMany关系上使用inverse = false?

我一直试图掌握Hibernate的逆属性,它似乎只是概念上难以解决的问题之一.

我得到的要点是,当你有一个使用一对多映射的Child对象集合的父实体(例如Parent)时,在映射上设置inverse = true告诉Hibernate'另一边(Child) )有责任更新自己以维护其表中的外键引用'.

这样做对于在代码中向集合中添加Children,然后保存Parent(使用cascade-all set)有两个好处:在数据库上保存一个不必要的命中(因为没有逆集,Hibernate认为它有两个地方更新FK关系),并根据官方文档:

如果关联的列被声明为NOT NULL,则NHibernate在创建或更新关联时可能会导致约束违规.要防止出现此问题,必须使用标记为inverse ="true"的多值结束(集合或包)的双向关联.

到目前为止,这一切似乎都有意义.我不明白是这样的:你什么时候会希望使用逆=真正在一个一对多的关系?

collections nhibernate hibernate inverse one-to-many

70
推荐指数
3
解决办法
3万
查看次数

Flutter 捕获所有未处理的异常

我试图在 Flutter 应用程序中捕获所有未处理的异常,以便将其发送给崩溃报告者。Flutter 文档中关于如何执行此操作的说明。我遵循了这些,并在我的应用程序中添加了两段代码以捕获异常:

通过包装runApp来捕捉 Dart 错误runZoned

runZoned<Future<void>>(
  () async {
    runApp(MyApp());
  },
  onError: (dynamic error, StackTrace stackTrace) {
    print("=================== CAUGHT DART ERROR");
    // Send report
  },
);
Run Code Online (Sandbox Code Playgroud)

通过设置捕捉颤振错误FlutterError.onError

FlutterError.onError = (FlutterErrorDetails details) {
  print("=================== CAUGHT FLUTTER ERROR");
  // Send report
};
Run Code Online (Sandbox Code Playgroud)

但是,当我在运行时通过从按钮抛出异常进行测试时:

throw Exception("Just testing");
Run Code Online (Sandbox Code Playgroud)

控制台中出现异常:

????????? 异常捕获手势???????????????????????????????????????????????? ????????????????????? 处理手势时抛出了以下 _Exception: Exception: Just testing 当抛出异常时,这是堆栈:

... 等等

但是我看不到我的打印语句的迹象(CAUGHT DART ERROR 或 CAUGHT FLUTTER ERROR),并且在这些行上设置断点似乎永远不会命中,所以我认为我的异常处理代码没有捕捉到它。我错过了什么吗?

这是一个最小的可重现示例(单击按钮,该按钮会引发异常,但未按预期捕获):

import 'dart:async';
import 'package:flutter/material.dart'; …
Run Code Online (Sandbox Code Playgroud)

exception dart flutter

29
推荐指数
3
解决办法
2万
查看次数

NHibernate中的空值对象

我有一个包含Address作为值对象的person实体:

public Person()
{
    WithTable("Person");
    Id(x => x.Id);
    Component<Address>(x => x.Address, a =>
    {
        a.Map(x => x.Address1);
        a.Map(x => x.Address2);
        a.Map(x => x.Address3);
        a.Map(x => x.Town);
        a.Map(x => x.Postcode);
    });
}
Run Code Online (Sandbox Code Playgroud)

它在NHibernate文档中指出,如果值对象(Address1,Address2等)的所有属性都为null,则整个组件将被映射为null(即Person.Address将为null).这给了我所有地址字段为空的情况下的问题,因为在我的网页中我可能有(我正在做ASP MVC):

<%= Html.TextBoxFor((x => x.Address.Address1))%>
Run Code Online (Sandbox Code Playgroud)

这打破了空引用异常.所以我正在寻找一种简洁的方法将Address设置为一个新的Address()对象而不是null,如果我从数据库加载Person而不手动操作时所有字段都是空的.我打了以下想法:

在我的视图中进行空检查(yuk,可怕)

使数据库字段不可为空(我正在处理遗留数据库)

任何想法?

null nhibernate-mapping fluent-nhibernate value-objects

10
推荐指数
2
解决办法
3834
查看次数

Dart Future.wait 多个期货并取回不同类型的结果

我正在使用 Flutter 从服务器下载 3 组不同的数据,然后对所有 3 组数据进行处理。我可以这样做:

List<Foo> foos = await downloader.getFoos();
List<Bar> bars = await downloader.getBars();
List<FooBars> foobars = await downloader.getFooBars();

processData(foos, bars, foobars);
Run Code Online (Sandbox Code Playgroud)

但我更喜欢并行异步下载所有 3 个数据集。我已经看到 Dart 有这个Future.wait 方法

Future<List<T>> wait <T>(
   Iterable<Future<T>> futures, {
   bool eagerError: false, 
   void cleanUp(
      T successValue
   )
}) 
Run Code Online (Sandbox Code Playgroud)

但是看起来这只会返回相同类型(T)的值。我有 3 种不同的类型,所以我不知道如何使用它并取回我的 3 个数据集。

实现这一目标的最佳替代方法是什么?

谢谢!

concurrency asynchronous future dart flutter

10
推荐指数
2
解决办法
4347
查看次数

无法将请求的类放入单个dex文件中,即使对于先前已编译良好的提交也是如此

因此,我刚刚达到了我的android项目的最大方法数限制,该项目无法生成并显示以下错误消息:

错误:null,无法在单个dex文件中容纳请求的类(#方法:117407> 65536)

我了解该消息的含义以及如何解决(运行proguard,启用multidex等)。我的问题是我不明白为什么突然收到此消息-我正在做的是删除一些多余的旧代码,点击生成,现在我收到此消息。

问题1:即使我没有添加任何库依赖关系,我的方法计数(根据错误消息为117407)怎么可能突然大大超过限制(65536)?我实际上删除了代码,突然间我喜欢5万种方法?

现在,这真的变得很奇怪:我想分析APK以找出导致问题的原因,但是我当然不能构建它。因此,我没有启用multidex,而是决定将我的代码还原为昨天(绝对可以在昨天进行正确的构建-我的手机上已经安装了该应用程序以证明这一点!),但是仍然收到此构建错误消息。我不知道这怎么可能。我尝试恢复到几天前的同一件事(克隆一个新的repo并签出一个较早的提交)。

因此,问题2:对于昨天刚构建好的没有错误的完全相同的代码,我如何得到此构建错误?

我唯一能想到的是,我用作依赖项的库的大小突然增加了-但是我在gradle构建中声明了所有内容的特定版本,例如:

// RxJava
implementation 'io.reactivex.rxjava2:rxandroid:2.1.0'
implementation 'io.reactivex.rxjava2:rxjava:2.2.4'

// Retrofit
implementation 'com.squareup.retrofit2:retrofit:2.5.0'
implementation 'com.squareup.retrofit2:converter-gson:2.5.0'
Run Code Online (Sandbox Code Playgroud)

因此,我的依赖关系肯定不会改变吗?

我能做些什么来解决这个问题的任何想法都将受到赞赏。我试过清理我的项目,并使android studio中的缓存无效/重启。我真的不想启用multidex或必须在我的调试版本上运行proguard。

这是完整的build.gradle:

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'

android {
    compileSdkVersion 28
    defaultConfig {
    applicationId "XXXXXXXXX"
    minSdkVersion 19
    targetSdkVersion 28
    versionCode 1
    versionName "0.1"
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    vectorDrawables.useSupportLibrary = true  // see https://developer.android.com/studio/write/vector-asset-studio#sloption
}
buildTypes {
    release {
        minifyEnabled false
        // Do code shrinking!
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
} …
Run Code Online (Sandbox Code Playgroud)

android dex android-studio android-gradle-plugin

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

NHibernate保存/更新事件监听器:监听子对象保存

我有一个Area对象,它有许多SubArea子元素:

public class Area
{
    ...
    public virtual IList<SubArea> SubAreas { get; set; } 
}
Run Code Online (Sandbox Code Playgroud)

他将孩子映射为单向非反向关系:

public class AreaMapping : ClassMap<Area>
{
    public AreaMapping()
    {
        HasMany(x => x. SubAreas).Not.Inverse().Cascade.AllDeleteOrphan();
    }
}
Run Code Online (Sandbox Code Playgroud)

区域是我的聚合根.当我保存一个区域(例如Session.Save(区域))时,该区域被保存并且子SubAreas自动级联.

我想添加一个保存或更新事件监听器,以便在持久保存区域和/或子区域时捕获.比方说,我有一个区域,有5个SubAreas.如果我挂钩到SaveEventListeners:

Configuration.EventListeners.SaveEventListeners = 
    new ISaveOrUpdateEventListener[] { mylistener };
Run Code Online (Sandbox Code Playgroud)

当我保存区域时,Mylistener 仅针对区域被触发一次(SubAreas被忽略).我希望在事件监听器中捕获5个SubAreas.如果我挂钩到SaveOrUpdateEventListeners:

Configuration.EventListeners.SaveOrUpdateEventListeners = 
    new ISaveOrUpdateEventListener[] { mylistener };
Run Code Online (Sandbox Code Playgroud)

当我保存区域时,Mylistener根本没有被解雇.奇怪的是,如果我挂钩到SaveEventListeners SaveOrUpdateEventListeners:

Configuration.EventListeners.SaveEventListeners = 
    new ISaveOrUpdateEventListener[] { mylistener };
Configuration.EventListeners.SaveOrUpdateEventListeners = 
    new ISaveOrUpdateEventListener[] { mylistener };
Run Code Online (Sandbox Code Playgroud)

当我保存区域时,Mylistener被解雇11次:一次为该区域,每次SubArea两次!(我认为因为NHIbernate正在插入SubArea然后使用区域外键更新).

有谁知道我在这里做错了什么,以及如何让听众为每个区域和分区点燃一次

nhibernate events children event-listener event-handling

7
推荐指数
1
解决办法
1816
查看次数

Flutter:最小高度、扩展和 SingleChildScrollView?

我不知道如何在 Flutter 中进行这种布局。我想要实现的是:

  • 我有一列,包含一个固定高度的子项(标题文本小部件)和两个扩展小部件。我使用扩展是因为我希望每个人共享剩余屏幕的一半。
  • 当方向更改为横向时,没有足够的空间来正确显示展开的小部件的内容。所以我想要的是在这两个小部件上应用最小高度,并使其变得可滚动。

我希望这是有道理的 - 我不知道如何实现这一点。我已经尝试了很多扩展、灵活、列、SingleChildScrollView、最小列轴大小等组合,但我尝试的一切都会导致某种无限高度异常。这甚至可能吗?

这是一些示例代码:以下工作正常。如何在两个占位符上实现滚动和最小高度?

import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: SafeArea(
        child: Column(
          children: <Widget>[
            Text("Title"),
            // I need to apply a minimum height on these two widgets,
            // and it should be scrollable if necessary:
            Expanded(
              child: Placeholder(),
            ),
            Expanded(
              child: Placeholder(),
            )
          ], …
Run Code Online (Sandbox Code Playgroud)

flutter flutter-layout

7
推荐指数
1
解决办法
4556
查看次数

从存储到SQL的Azure数据工厂复制活动:挂起70000行

我有一个数据工厂,其管道复制活动如下:

{
  "type": "Copy",
  "name": "Copy from storage to SQL",
  "inputs": [
    {
      "name": "storageDatasetName"
    }
  ],
  "outputs": [
    {
      "name": "sqlOutputDatasetName"
    }
  ],
  "typeProperties": {
    "source": {
      "type": "BlobSource"
    },
    "sink": {
      "type": "SqlSink"
    }
  },
  "policy": {
    "concurrency": 1,
    "retry": 3
  },
  "scheduler": {
    "frequency": "Month",
    "interval": 1
  }
}
Run Code Online (Sandbox Code Playgroud)

输入数据大小约为90MB,大约150万行,分为约.Azure存储中的20 x 4.5MB块blob文件.以下是数据示例(CSV):

A81001,1,1,1,2,600,3.0,0.47236654,141.70996,0.70854986 A81001,4,11,0,25,588,243.0,5.904582,138.87576,57.392536 A81001,7,4,1,32,1342,278.0,7.5578647,316.95795, 65.65895

接收器是S2类型的Azure SQL Server,其额定值为50 DTU.我创建了一个简单的表,其中包含合理的数据类型,没有键,索引或任何花哨的东西,只有列:

CREATE TABLE [dbo].[Prescriptions](
    [Practice] [char](6) NOT NULL,
    [BnfChapter] [tinyint] NOT NULL,
    [BnfSection] [tinyint] NOT NULL,
    [BnfParagraph] [tinyint] …
Run Code Online (Sandbox Code Playgroud)

performance azure azure-storage-blobs azure-data-factory azure-sql-database

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

在CruiseControl仪表板中显示HTML报告

我最近一直在研究CruiseControl配置(我是一个完整的CC noob)到目前为止我理解你的构建过程生成的各种XML报告(例如mbunit.xml,ncover.xml,fxcop.xml)可以显示在仪表板通过向ccnet.config的以下部分添加对xml的引用:

<publishers>
 <merge>
  <files>
   <file>logs\some-report.xml</file>
  </files>
 </merge>
</publish>
Run Code Online (Sandbox Code Playgroud)

添加一个xsl文件,将xml转换为可呈现的html,并向dashboard.config添加一个报告构建插件,该插件引用了xsl:

<xslReportBuildPlugin description="Some report"
actionName="SomeReportAction" xslFileName="xsl\some-report.xsl" />
Run Code Online (Sandbox Code Playgroud)

我的问题是:如果我有一些报告(由JGregory的Docu生成的代码文档和由jpboodhoo的Bdddoc生成的测试规范)是纯HTML,有什么方法可以用类似的方式在仪表板中显示这些内容吗?我无法弄清楚这一点.我确实想过将ExternalLink直接添加到HTML页面,但这是在用户通常无法访问的受保护区域.任何想法?

html xml cruisecontrol.net dashboard documentation-generation

5
推荐指数
1
解决办法
2092
查看次数

在面向 iOS 15.0 的项目中“...仅在 iOS 13.0 或更高版本中可用”

我使用的是 Xcode 13.4,并使用“带有手表应用程序的 iOS 应用程序”项目模板创建了一个新的 SwiftUI 项目。主应用程序的目标设置为 iOS 15.5,手表目标设置为 WatchOS 8。一切都在模拟器上正常构建和运行。

我刚刚使用 Xcode 的菜单栏选项将watch-date-picker Swift 包(为 WatchOS 添加日期选择器的包)添加到我的项目中:File -> Add packages...

在此输入图像描述

现在我无法构建我的项目 - 我在添加的 watch-date-picker 包的代码中收到大量错误,抱怨各种事情都是only available in iOS 13.0 or newer. 我什至还没有尝试使用该库 - 我刚刚通过添加它File -> Add Packages。以下是包设置:

// swift-tools-version:5.5
import PackageDescription

let package = Package(
  name: "watch-date-picker",
  defaultLocalization: "en",
  platforms: [
    .watchOS(.v8)
  ],
  products: [
    .library(name: "WatchDatePicker", targets: ["WatchDatePicker"]),
  ],
  targets: [
    .target(name: "WatchDatePicker", dependencies: []),
    //.executable(name: "WatchDatePickerExamples", dependencies: ["WatchDatePicker"]),
  ]
) …
Run Code Online (Sandbox Code Playgroud)

xcode ios swift watchkit swiftui

5
推荐指数
2
解决办法
9699
查看次数