小编st-*_*t-h的帖子

Hibernate JPA:@OneToMany删除old,插入new而不刷新

我实际上从来没有完全理解这种在hibernate中的行为.我在名为'Parent'的实体中使用@OneToMany关系,其注释如下:

@OneToMany(cascade = {CascadeType.ALL, CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REMOVE }, orphanRemoval = true)
@JoinColumn(name = "entity_id", insertable = true, updatable = true, nullable = false)
private List<Child> children;
Run Code Online (Sandbox Code Playgroud)

现在我想在一个事务中执行以下操作:

  • 获取父实体
  • 遍历子项列表
  • 删除其中一个孩子
  • 插入一个新的孩子

所以,基本上我只是完全取代其中一个孩子.

据我了解这个问题,我应该可以这样做:(请注意,这只是一些java伪代码来说明问题)

@TransactionAttribute(TransactionAttributeType.REQUIRED)
public void deleteAndAdd(Long parentId, Long childId) {
  Parent parent = entityManager.find(parentId);
  for (Iterator it = parent.children.iterator(); it.hasNext();) {
    Child child = it.next();
    if (child.id == childId) {
      it.remove();
    }
  }
  Child newChild = new Child();
  parent.children.add(newChild);
}
Run Code Online (Sandbox Code Playgroud)

但是,如果新Child具有与旧Child相同的唯一键值,则会失败.因此,基本上看起来旧的子实体在新的实体持久化之前没有被正确删除.

如果我在删除旧子节点和持久保存新子节点之间添加了entityManager.flush(),如下所示:

@TransactionAttribute(TransactionAttributeType.REQUIRED)
public void deleteAndAdd(Long parentId, Long childId) …
Run Code Online (Sandbox Code Playgroud)

java hibernate jpa

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

Gradle依赖仅用于编译时和测试

我基本上在寻找一种模仿maven依赖的方法provided.我正在构建一个jar(db驱动程序的扩展),它依赖于另一个jar(db驱动程序),但我不想包含那个jar.

我可以用来compileOnly实现这一点,但是现在测试不会运行或编译,因为测试中不包含所需的jar.

我尝试了可用的依赖项列表testCompile,但是我找不到一个在编译时使jar可用以及测试运行和编译的时候.

我该如何正确地包括那个罐子?

编辑:根据要求,build.gradle文件:

group 'com.mygroup'
version '1.0-SNAPSHOT'

apply plugin: 'java'

sourceCompatibility = 1.8

repositories {
    mavenCentral()
}

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.11'
    compileOnly "org.mongodb:mongodb-driver:3.3.0"
    testCompile "org.mongodb:mongodb-driver:3.3.0"
}
Run Code Online (Sandbox Code Playgroud)

两次列出依赖项确实有效,但显然不是一个非常好的解决方案

gradle

16
推荐指数
1
解决办法
4753
查看次数

了解重叠和添加过滤

我试图在oder中实现重叠和添加方法,以在实时上下文中应用过滤器.但是,似乎有一些我做错了,因为结果输出的误差比我预期的要大.为了比较我的计算的准确性,我创建了一个文件,我在一个块中处理.我将此与重叠和添加过程的输出进行比较,并将得到的比较作为计算准确性的指标.所以这是我的重叠过程并添加:

在此输入图像描述

  • 我从输入信号中取出一大块长度为L.
  • 我用零填充块长度L*2
  • 我将该信号转换为频域
  • 我将频域中的信号与我在频域中的长度为L*2的滤波器响应相乘(滤波器响应实际上是通过在UI中插入控制点来创建的 - 所以这不是从时域转换的.但是使用长度L*2 in频域应类似于使用长度为L的接收时域信号填充到L*2)
  • 然后我将结果信号转换回时域并将其添加到输出流中,重叠为L.

这个程序有什么问题吗?在阅读了很多不同的论文和书籍之后,我已经非常不确定哪种方法可以解决这个问题.

以下是我运行的测试中的更多数据:

我创建了一个由三个余弦波组成的信号 输入信号

我在时域中使用此过滤器功能进行过滤.(它是对称的,因为它应用于FFT的整个输出,对于实际输入信号也是对称的) 过滤时域

IFFT的输出如下所示:可以看出低频在中频范围内衰减的频率高于频率. 输出信号

对于重叠添加/保存和窗口处理,我将输入信号分成8个256个样本的块.重新组装后,它们就像那样.(样本490 - 540)

输出信号重叠并添加: 输出信号重叠并添加

输出信号重叠并保存: 输出信号重叠并保存

使用带Hanning窗口的STFT输出信号: 使用带Hanning窗口的STFT输出信号

可以看出,重叠添加/保存过程与块放在一起的点处的STFT版本不同(样本511).这是比较窗口化过程和重叠添加/保存时导致不同结果的主要错误.然而,STFT更靠近输出信号,输出信号已在一个块中处理.几天后我几乎陷入困境.这有什么不对?

这是我的来源

    // overlap and add

// init Buffers
for (UInt32 j = 0; j<samples; j++){
    output[j] = 0.0;
}


// process multiple chunks of data
for (UInt32 i = 0; i < (float)div * 2; i++){

    for (UInt32 j = 0; j < chunklength/2; j++){
        // copy input data to the first half ofcurrent buffer
        inBuffer[j] = input[(int)((float)i * …
Run Code Online (Sandbox Code Playgroud)

signal-processing fft add overlap

14
推荐指数
1
解决办法
8803
查看次数

构建RPM以只安装文件

我需要构建一个RPM,其唯一目的是安装一些字体.我已经阅读了几个关于它的教程,但是每个人似乎都暗示了一些不同的东西,而且我无法找到像这样的非常基本的设置.

是否可以仅引用规范的%files部分中的文件?我尝试过,rpm总是试图找到tmp目录中的文件.我是否需要添加一个特定的构建步骤,将我需要的所有内容复制到tmp目录中?

在构建rpm时,这些文件是否应该进入SOURCE或BUILD目录?我一直在寻找很多不同的信息.有人建议构建一个包含文件的tarball并放在SOURCE目录下,但这看起来有点不对,因为字体文件对我来说不是实际的源文件.

理想情况下,我想将所有字体文件放在一个目录结构中的BUILD文件夹中,如'./usr/share/fonts/',然后在SPEC的%file部分引用它,让RPM发挥其魔力.可能我在这里遗漏或误解了一些东西.

%files部分是否总是希望在tmp目录中找到源文件,或者我的设置有问题?我创建了包含的〜/ .rpmmacros

%_topdir             /Users/user/rpm
Run Code Online (Sandbox Code Playgroud)

这是根构建目录,包含BUILD,RPMS,SOURCES,SPECS和tmp目录.

如果有人能够提供spec文件中最不需要的项目以使其干净利落,我会很高兴.

编辑

按照user3159253的建议,我使用以下spec文件:

Name: test
Version: 1.0.0
Release: 1
Copyright: Copyright info
Group: Applications/System
BuildArch: noarch

%description
Brief description of software package.

%prep

%build

%install
mkdir -p %{buildroot}/usr/share/fonts
cp ./usr/share/fonts/* %buildroot/usr/share/fonts/

%clean

%files
/usr/share/fonts/*
Run Code Online (Sandbox Code Playgroud)

我将字体复制到BUILD/usr/share/fonts /目录中.如果我在rpm中查询文件列表,那么所有字体都在那里.但是,当我安装rpm时,它会抱怨

/usr/share/fonts is needed by test-1.0.0-1.noarch
Run Code Online (Sandbox Code Playgroud)

但是,如果此目录存在与否并不重要,所以我猜rpm正在抱怨此资源未在其数据库中列出.

我已经能够通过将%file部分更改为:

/usr/
/usr/share/
/usr/share/fonts/
/usr/share/fonts/*
Run Code Online (Sandbox Code Playgroud)

但是,我怀疑这是一个好主意.有没有更好的方法来解决这个问题?

rpm rpm-spec

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

SPA:仅使用websockets.为什么不?

我正在重新设计一个Web应用程序,该应用程序以前已经在服务器端呈现给单页应用程序并开始阅读有关websockets的内容.Web应用程序将使用套接字将新记录和/或消息推送到客户端.我一直在想为什么大多数使用套接字的页面都不能处理它们在套接字上的所有通信.除了websocket之外,大多数时候都有RESTful后端.让客户端通过套接字查询新资源是不是一个坏主意?如果是这样,为什么 - 除了RESTful api可能更容易与其他设备一起使用?

我可以想象,如果网络连接像移动设备那样糟糕,使用websockets可能不是最好的想法,但是这可能应该与网络的合理连接很好地工作.

我发现了这个相关的问题,但它是从2011年开始看起来有点过时了: websocket api取代了rest api?

websocket single-page-application

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

使用请求调用UIWebView webViewDidStartLoad,其属性为null

我目前正在调试UIWebView以获取一些信息以提高性能(在服务器和iPhone上).我注意到在调用loadRequest之后:回调

- (void)webViewDidStartLoad:(UIWebView *)webView_ 
Run Code Online (Sandbox Code Playgroud)

被调用,但请求的每个参数都为null.

我使用以下声明:

    - (void)webViewDidStartLoad:(UIWebView *)webView_{
    NSLog(@"%@ \t Start Request: %@ \n absolute: %@ \n Method: %@ \n Parameters: %@ \n Port: %@ \n Query: %@ \n Header Fields: %@ \n HTTPBody: %@ \n HTTPBodyStream: %@", [NSDate date], [[webView_ request] mainDocumentURL], [[[webView_ request] mainDocumentURL] absoluteString], [[webView_ request] HTTPMethod], [[[webView_ request] mainDocumentURL] parameterString], [[[webView_ request] mainDocumentURL] port], [[[webView_ request] mainDocumentURL] query], [[webView_ request] allHTTPHeaderFields], [[webView_ request] HTTPBody], [[webView_ request] HTTPBodyStream]);
}
Run Code Online (Sandbox Code Playgroud)

输出是:

 2011-05-11 17:15:34 +0200    Start Request: (null) …
Run Code Online (Sandbox Code Playgroud)

iphone performance uiwebview

9
推荐指数
1
解决办法
5081
查看次数

共享文件夹上的Visual Studio 2010项目:致命错误C1033:无法打开程序数据库

我正在Mac上的VMWare中运行Windows 7,因为我正在开发一个跨平台项目.我希望将所有平台独立文件保存在同一个文件夹中 - 这就是为什么我要在mac上的文件夹中组织所有内容并与在VM中运行的窗口共享它.当我尝试在共享文件夹中编译项目时,我得到
致命错误C1033:无法打开程序数据库'\ vmware-host\shared folders\audio\vst3 sdk\base\win\win32\debug.base_vc9\base_vc9.pdb'

我可以使用Windows资源管理器在该文件夹上写入和读取文件.尝试以管理员身份运行Visual Studio.没有帮助.

如果我只是将我的文件夹从共享文件夹复制到本地驱动器,我可以毫无问题地编译项目.但是,复制我的整个项目只是为了构建一个Windows而不是一个选项.

有没有人知道发生了什么?我该如何解决这个问题?

更新:我在Windows中禁用了我的防病毒软件:没有帮助.但是,一位同事下班指出了一个解决方法:在Mac OS下设置SMB文件共享并使用windows连接到samba共享.令人惊讶的是,我能够在samba共享上编译项目.如果有人能解释这个问题会很高兴.

database visual-studio-2010 windows-7

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

nginx:当 proxy_pass 失败时回退到 try_files 需要不寻常的配置

我正在使用 Nginx 为单页应用程序提供服务。基本上我们只需要index.html在没有找到匹配文件时提供页面。该位置看起来像这样并且一直运行良好:

location / {
   try_files $uri $uri/ /index.html
}
Run Code Online (Sandbox Code Playgroud)

现在我想查询一个上游服务器,只有当失败时,才使用try_files上面的指令

如果try_files刚刚移动到后备位置,如

location @fallback {
  try_files $uri $uri/ /index.html;
}

location / {
  proxy_pass http://127.0.0.1:8080;
  proxy_intercept_errors on;
  error_page 400 403 502 503 504 @fallback;
}
Run Code Online (Sandbox Code Playgroud)

然后 - 当上游服务器不可用时 - 客户端会看到 Nginx 502 错误页面,而不是文件系统提供的文件。

我终于找到了一个解决方案,该解决方案通过在 /index.html 回退前使用双斜线起作用。这是整个配置文件,可以与官方 nginx docker 镜像一起用于测试

events {
} 

http {

  error_log /var/log/nginx/error.log;
  access_log /var/log/nginx/access.log;

  server {

    listen 80;

    root /usr/share/nginx/html/;

    location / { 
      proxy_pass http://127.0.0.1:9990;
      proxy_intercept_errors on; 
      error_page 400 …
Run Code Online (Sandbox Code Playgroud)

nginx proxypass single-page-application

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

iPhone:Facebook FBDialog预填充消息

今天我注意到我用来显示使用Facebook SDK的FBDialog的代码,它显示带有预填充文本的Dialog不再有效.它只显示带有空文本字段的对话框.我要显示的文字丢失了.

有没有其他人遇到类似的问题,还是有更好的方法用字符串预填充文本字段?

这是我用来调用FBDialog的代码:

NSString * message = @"Pre-filled Text";
NSMutableDictionary * params = [NSMutableDictionary dictionaryWithObjectsAndKeys: message,  @"message", nil];
[facebook dialog:@"feed" andParams:params andDelegate:self];
Run Code Online (Sandbox Code Playgroud)

iphone facebook ios

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

在C/C++中是否有一种简单的方法来计算具有以下特征的"平滑"函数?

首先指定一些内容:用户应该能够通过在2D字段上指定3到5个点来创建图形.第一个和最后一个点总是在该字段的边界(它们的位置可能只在y方向上改变 - 而不是x).在这些位置处的图的推导应该是0.可以自由地指定第3点和后续点的位置.应插入一个图表,该图表遍历所有点.但是,此图表应尽可能平滑和平坦.(请为在数学上不正确而道歉)

重要的是:我需要在之后对该图的值进行采样并将其应用于离散信号.第二件事:在x轴的范围内,函数的值不应超过y轴上的边界.在我的图片中,y轴为0和1.我创建了一些图片来说明我在谈论使用3分的内容.

我有些想法:

  1. 使用(立方?)样条:可以应用它们的特征来形成这样的曲线而没有太多问题.但是,据我所知,它们与全局x轴无关.它们通过通常称为(s)的参数与下一个点相关地指定.因此,很难对与x轴相关的图的值进行采样.当我错的时候请纠正我.
  2. 创建一个矩阵,其中包含这些点上的点和推导,并使用LU分解或等效的方法求解该矩阵.

到目前为止,我还没有深入了解这些技术,所以我可能会错过一些我还不知道的优秀技术或算法.

还有一件事情,那就是能够做到的事情:能够通过改变一个或几个参数来调整曲线的陡度.我通过在我的一些照片中使用红色和黑色图表来说明这一点.任何想法或提示如何有效地解决这个问题?

替代文字 替代文字 替代文字替代文字

c++ math interpolation graph function

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