我一直试图掌握Hibernate的逆属性,它似乎只是概念上难以解决的问题之一.
我得到的要点是,当你有一个使用一对多映射的Child对象集合的父实体(例如Parent)时,在映射上设置inverse = true告诉Hibernate'另一边(Child) )有责任更新自己以维护其表中的外键引用'.
这样做对于在代码中向集合中添加Children,然后保存Parent(使用cascade-all set)有两个好处:在数据库上保存一个不必要的命中(因为没有逆集,Hibernate认为它有两个地方更新FK关系),并根据官方文档:
如果关联的列被声明为NOT NULL,则NHibernate在创建或更新关联时可能会导致约束违规.要防止出现此问题,必须使用标记为inverse ="true"的多值结束(集合或包)的双向关联.
到目前为止,这一切似乎都有意义.我不明白是这样的:你什么时候会不希望使用逆=真正在一个一对多的关系?
我试图在 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) 我有一个包含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,可怕)
使数据库字段不可为空(我正在处理遗留数据库)
任何想法?
我正在使用 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 个数据集。
实现这一目标的最佳替代方法是什么?
谢谢!
因此,我刚刚达到了我的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) 我有一个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然后使用区域外键更新).
有谁知道我在这里做错了什么,以及如何让听众为每个区域和分区点燃一次?
我不知道如何在 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) 我有一个数据工厂,其管道复制活动如下:
{
"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
我最近一直在研究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
我使用的是 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) flutter ×3
dart ×2
nhibernate ×2
android ×1
asynchronous ×1
azure ×1
children ×1
collections ×1
concurrency ×1
dashboard ×1
dex ×1
events ×1
exception ×1
future ×1
hibernate ×1
html ×1
inverse ×1
ios ×1
null ×1
one-to-many ×1
performance ×1
swift ×1
swiftui ×1
watchkit ×1
xcode ×1
xml ×1