小编mat*_*jes的帖子

JPA/Hibernate:在不存在的序列/关系上选择 currval

我对 JPA/Hibernate 有一个令人困惑的问题:select currval()将值插入表后,对不存在的关系/序列执行 a 。我有两个类似的案例,一个有效,另一个无效。

\n\n

这是第一个非工作版本。

\n\n

实体:

\n\n
@Entity\n@Table(name = "meter")\n@Data\n@EqualsAndHashCode(callSuper = true)\npublic class Meter extends AbstractTimestampEntity {\n\n    @Id\n    @GeneratedValue(strategy = GenerationType.IDENTITY)\n    private Long id;\n\n    @Column(name = "meter_id")\n    private Long meterId;\n\n    @Column(name = "meter_id_str")\n    private String meterIdStr;\n\n    @Column(name = "contract_id")\n    private Long contractId;\n\n    @Column(name = "user_id")\n    private Long userId;\n\n    @Column(name = "com_id")\n    private String comId;\n\n    @Column(name = "is_active")\n    private Boolean isActive;   \n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

飞行路线脚本:

\n\n
CREATE SEQUENCE meter_seq;\nCREATE TABLE IF NOT EXISTS meter (\n  id …
Run Code Online (Sandbox Code Playgroud)

hibernate jpa spring-data-jpa

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

zsh:强制单选项卡完成

我最近从 bash 切换到 zsh。如何实现以下选项卡完成行为:

输入第一个字母,然后按TAB。完成输入直到第一个不明确的字母并立即显示选项/替代方案。

目前,它的行为是这样的:

# ls .m*
  .mysql_history  .matlab  .matplotlib  .mono  .mozilla
# cd .m<TAB>
  .matlab/  .matplotlib/  .mono/  .mozilla/
# cd .mo<TAB>
  .mono/  .mozilla/
# cd .ma<TAB><TAB> (here two tabs are necessary: the first one completes to .mat, 
                    the second one show .matlab and .matplotlib)
Run Code Online (Sandbox Code Playgroud)

在最后一种情况下,我想去掉第二个选项卡。zshs 完成系统可以做到这一点吗?

这是我的当前.zshrc

HISTFILE=~/.histfile
HISTSIZE=10000
SAVEHIST=1000

# Options
setopt autocd

# Aliases
alias ls='ls --color -h --group-directories-first'
alias ll='ls -laF --color -h --group-directories-first'
alias la='ls -A --color -h --group-directories-first' …
Run Code Online (Sandbox Code Playgroud)

zsh zshrc zsh-completion

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

Python不使用环境中的语言环境

我有一个Python程序(jrnl),该程序应将星期几以德语文本打印。但是,它总是打印英文名称。

这是输出locale

LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC=de_DE.UTF-8
LC_TIME=de_DE.UTF-8
LC_COLLATE="en_US.UTF-8"
LC_MONETARY=de_DE.UTF-8
LC_MESSAGES="en_US.UTF-8"
LC_PAPER=de_DE.UTF-8
LC_NAME=de_DE.UTF-8
LC_ADDRESS=de_DE.UTF-8
LC_TELEPHONE=de_DE.UTF-8
LC_MEASUREMENT=de_DE.UTF-8
LC_IDENTIFICATION=de_DE.UTF-8
LC_ALL=
Run Code Online (Sandbox Code Playgroud)

您可以看到将LC_TIME其设置为de_DE.UTF-8。但是当我启动python时,未设置此语言环境:

>>> import locale
>>> locale.getlocale(locale.LC_TIME)
(None, None)
Run Code Online (Sandbox Code Playgroud)

所以我的工作日用英语显示:

>>> from time import gmtime, strftime
>>> strftime("%A, %d %b %Y %H:%M:%S +0000", gmtime())
'Monday, 15 Jan 2018 20:22:30 +0000'
Run Code Online (Sandbox Code Playgroud)

我必须为python使用系统区域设置做什么?

python locale

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

PostgreSQL SELECT ... FOR UPDATE:并发长时间运行查询会发生什么?

SELECT ... FOR UPDATE我想知道当两个事务并行执行查询时会发生什么。背景是我想使用SELECT ... FOR UPDATEwith实现一个作业队列SKIP LOCKED,如下所示: https: //vladmihalcea.com/database-job-queue-skip-locked/。但在本文中,查询非常简单。

具有两个事务 T1 和 T2 的示例(事务隔离级别设置为READ_COMMITTED):

  1. T1开始
  2. T1 执行SELECT ... FOR UPDATE,搜索新行,这需要一些时间。
  3. T2开始
  4. T2 使用SELECT ... FOR UPDATE与 T1 相同的 WHERE 子句和参数执行,这也需要一些时间。
  5. T1 最终找到所有行,锁定它们
  6. T1 开始更新行(例如,将它们标记为正在 IN_PROGRESS)
  7. T2 终于找到行 => 现在会发生什么?

一些问题:

  1. 我假设 T1 在原子操作中锁定行。它是否正确?
  2. 那么,当 T2 最终找到它的结果集并尝试锁定行时,它无法做到这一点?在这种情况下,T2 有何反应?我的假设是它会等到 T1 释放锁(不使用 NOWAIT 时)。
  3. 如果 T2 在 T1 进行任何更改(例如将作业状态从 NEW 更改为 IN_PROGRESS)之前完成查询会怎样?两个事务能否找到相同的结果集?
  4. 如果 T1 以某种方式标记锁定的行(例如,通过将状态列从 NEW 更改为 IN_PROGRESS)并且 T2 查找原始状态 …

postgresql concurrency transactions select-for-update

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

Spring LockRegistry:何时调用 LockRegistry.obtain()

我不确定什么时候打电话RedisLockRegistry.obtain(String lockKey)(或者,更一般地说,LockRegistry.obtain(String lockKey))。我应该在应用程序开始时只获得一次锁,然后像往常一样锁定/解锁它,还是应该在每次调用 lock 之前(在我使用它之前)获得一个锁?

目前我正在使用后一个选项,但是,我不确定这是否真的有必要。

java spring locking spring-integration

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