小编beg*_*er_的帖子

JPA (Hibernate) + Spring:处理唯一约束违规

我有一个具有唯一字段的实体 A,该字段基本上定义了实体,这意味着它是相等的,那么实体也完全相同。

第二点是,如果违反该约束,则绝不是例外。这意味着完全可以预期用户会尝试输入重复项。

在重复的情况下,应用程序应该默默地选择已经存在的实体。我的问题现在是我应该做什么,特别是在保存包含 As 列表的实体时。

  • 只需捕获异常并从那里开始

我不确定这是否容易实现,因为 DataIntegrityViolationException 不包含任何易于处理的信息,例如在级联持续的情况下受影响的实体!!!

  • 保存前检查(持久化)并将提交的实体替换为现有实体(具有 id 集)

我更喜欢这个,但是有相当大的开销,因为在每个插入之前可能有多个选择(存在检查)。

什么是更好的方法?

hibernate jpa unique-constraint

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

在特定模式之前匹配任何内容

我有几乎可以包含任何字符的字符串,包括(_- %等等.字符串以(\d{1,2}).结尾.例如.带有1或2位数的括号.我现在想要2个捕获组,2个数字和括号前的所有内容.

目前我有:

final Pattern pattern = Pattern.compile("^([-%\\(\\)_/= a-zA-Z\\d]+)\\((\\d{1,2})\\)$");
Run Code Online (Sandbox Code Playgroud)

但这并不符合一切.我想替换char组.*但没有匹配(\d{1,2})字符串的末尾.我怎样才能做到这一点?

java regex

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

带有 2 个 y 轴的 Seaborn 箱线图

如何创建带有 2 个 y 轴的 seaborn boxplot?我需要这个,因为不同的尺度。我当前的代码将覆盖箱线图中的第一个框,例如。它由第一个 ax 的 2 个第一个数据项和第二个 ax 的第一个数据项填充。

import pandas as pd
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
matplotlib.style.use('ggplot')
import seaborn as sns

df = pd.DataFrame({'A': pd.Series(np.random.uniform(0,1,size=10)),
                   'B': pd.Series(np.random.uniform(10,20,size=10)),
                   'C': pd.Series(np.random.uniform(10,20,size=10))})

fig = plt.figure()
# 2/3 of  A4
fig.set_size_inches(7.8, 5.51)

plt.ylim(0.0, 1.1)

ax1 = fig.add_subplot(111)

ax1 = sns.boxplot(ax=ax1, data=df[['A']])

ax2 = ax1.twinx()

boxplot = sns.boxplot(ax=ax2, data=df[['B','C']])

fig = boxplot.get_figure()
fig
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

如何防止第一项被覆盖?

编辑:

如果我添加位置参数

boxplot = sns.boxplot(ax=ax2, data=df[['B','C']], positions=[2,3])
Run Code Online (Sandbox Code Playgroud)

我得到一个例外:

TypeError: boxplot() …
Run Code Online (Sandbox Code Playgroud)

python matplotlib boxplot seaborn

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

Python / numpy:删除 3D 数组的空(零)边框

我有一个 3D numpy 数组。这可以被认为是一个图像(准确地说是场点的值)。我想删除所有维度的边框(0 值,请注意可能存在负值)。限制是所有分子的尺寸保持不变,例如。我只想删除边界,只要该维度中的“最大”条目仍在边界内。因此需要考虑整个数据集(小,大小不是问题)。

二维示例:

0  0  0  0  0
0  1  0  0  0
0  1  1  0  0
0  0  0  0  0
0  0  0  0  0

0  0  0  0  0
0  0  0  0  0
0  0  1  0  0
0  0  0  1  0
0  0  0  1  0
Run Code Online (Sandbox Code Playgroud)

这里最上面一行和最左边和最右边的列应该被删除。在整个数据集中,它们只包含 0 个值。

结果如下:

1  0  0
1  1  0
0  0  0
0  0  0

0  0  0
0  1  0
0  0 …
Run Code Online (Sandbox Code Playgroud)

python numpy image-processing multidimensional-array

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

Hibernate:继承和关系映射+泛型

我正在使用带有hibernate的spring-data JPA.我很难让我的继承和关系映射正常工作.

@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@Table(name="compound")
@DiscriminatorColumn(name="compound_type")
@DiscriminatorOptions(force=true)
public abstract class Compound<T extends Containable> {

    @OneToMany(fetch = FetchType.EAGER, mappedBy = "pk.compound",
        cascade = CascadeType.ALL, orphanRemoval = true)
    @LazyCollection(LazyCollectionOption.FALSE)     
    private List<CompoundComposition> compositions = new ArrayList<>(); 

    @OneToMany(fetch = FetchType.EAGER, mappedBy="compound",
        targetEntity=Containable.class, cascade = CascadeType.ALL) 
    @LazyCollection(LazyCollectionOption.FALSE)     
    private Set<T> containables = new HashSet<T>();

}

@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@Table(name="containable")
@DiscriminatorColumn(name="containable_type")
@DiscriminatorOptions(force=true)
public abstract class Containable<T extends Compound> {     

    @ManyToOne(optional=true, fetch = FetchType.EAGER, cascade = CascadeType.ALL)
    private T compound;
}
Run Code Online (Sandbox Code Playgroud)

这个想法是AbstractCompound的某个实现只能与Containable的一个特定实现相关联(反之亦然).这导致以下实现:

@Entity 
@DiscriminatorValue("TestCompound") 
public …
Run Code Online (Sandbox Code Playgroud)

generics inheritance hibernate

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

Spring AOP:@AfterThrowing执行切入点从不匹配

我对AOP完全不熟悉.我需要建议写出正确的切入点.我有一个包含所有服务类的服务包.所有类都实现了Service接口.该接口有一个方法save(entity).每次service.save(entity)方法抛出时我都应该执行我的建议DataIntegrityViolationException.

这方面:

@Component
@Aspect
public class DIVExceptionHandler {
    @AfterThrowing(pointcut = "execution(* myPackage.service.Service.save(*))", throwing = "ex")
        public void handleException(JoinPoint joinPoint, DataIntegrityViolationException ex) {
        //snipped
    }
}
Run Code Online (Sandbox Code Playgroud)

我在CP中有两个aspectj jar,如Spring AOP文档中所述,我已经添加<aop:aspectj-autoproxy/>到Spring配置中,我正在使用组件扫描.在测试的日志中,我可以看到方面被检测为aspetcj方面:

DEBUG o.s.a.a.a.ReflectiveAspectJAdvisorFactory - Found AspectJ method...
Run Code Online (Sandbox Code Playgroud)

所以我认为这不是一个配置问题,我的切入点表达是错误的.我也试过了

@AfterThrowing(pointcut = "execution(* myPackage.service.*.save(*))", throwing = "ex")
Run Code Online (Sandbox Code Playgroud)

但这也行不通.

那么正确的切入点表达是什么?

aspectj spring-aop

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

pandas:根据其他列乘以列

我有一个包含 a 列和 b 列的数据框。如果 b 为真,我想将 a 列乘以值 x;如果 b 为假,我想将列 a 乘以值 y。实现这一目标的最佳方法是什么?

python dataframe pandas

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

ggplot2:log10 刻度和轴限制

基本上就像这个问题:

使用对数刻度时如何在 ggplot2 中设置轴范围?

我的解决方案和 ggplot2 遇到的问题似乎是透支了。我想要limits = c(1,1e8)我不想要低于和高于这个限制的一点点额外空间。见下文:

错误的限制

我希望限制位于图表的边缘并且 0 个额外空间。我该如何实现这一目标?

r ggplot2

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

Javascript在将其放入历史记录之前更改url参数

我正在使用datatables JQuery插件.我使用它与AJAX和分页(服务器端).每行包含指向该记录详细视图的链接.单击该链接然后在后退按钮上,我想返回上一页.(注意:不能使用数据表自带状态保存).

这可以实现如果您可以在将url参数放入历史记录之前将其添加到当前URL.

可以这样做吗?纯JS或JQuery并不重要.

(注意:我很新做这种东西,已经读过关于使用#的内容,但从未这样做过,所以如果你建议请提供一个适用于我的问题的例子)

编辑:

非常基本的JQuery插件指南bbq(http://benalman.com/projects/jquery-bbq-plugin/)

假设URL的散列为#a = 2&b = test,您可以通过以下方式获取值:

//true = optional converts 2 to an integer, false to boolean,...
var a = $.bbq.getState('a',true);
Run Code Online (Sandbox Code Playgroud)

您可以通过以下方式更改/添加值:

var hash = "a=3&b=hello";
$.bbq.pushState(hash);
Run Code Online (Sandbox Code Playgroud)

pushState在绑定时触发hashchange事件.要绑定事件,但在doucment.ready函数中跟随:

// called when # part of URL is modified
$(window).bind( 'hashchange', function( event ) {
    var hash = event.fragment; // full hash as string
    var a = event.getState('a', true ); // value for a
    // here do meaningful action like an AJAX request using the hash …
Run Code Online (Sandbox Code Playgroud)

javascript browser-history http-request-parameters

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