小编G. *_*cki的帖子

Hibernate,@ SequenceGenerator和allocationSize

我们都知道Hibernate在使用时的默认行为@SequenceGenerator- 它将实际数据库序列增加1,将此值乘以50(默认allocationSize值) - 然后将此值用作实体ID.

这是不正确的行为,并与规范冲突说:

allocationSize - (可选)从序列中分配序列号时的增量.

要明确:我不打算生成ID之间的差距.

我关心的是与底层数据库序列不一致的 ID .例如:任何其他应用程序(例如使用普通JDBC)可能希望在从序列获取的ID下插入新行 - 但所有这些值可能已被Hibernate使用!疯狂.

有人知道这个问题的任何解决方案(没有设置allocationSize=1,从而降低性能)?

编辑:说
清楚.如果最后插入的记录具有ID = 1,则HB同时使用51, 52, 53...其新实体BUT的值:数据库中的序列值将设置为2.当其他应用程序使用该序列时,这很容易导致错误.

另一方面:规范说(根据我的理解)数据库序列应该被设置为51,同时HB应该使用范围中的值 2, 3 ... 50


更新:
正如Steve Ebersole在下面提到的:我可以通过设置启用我描述的行为(也是最直观的行为)hibernate.id.new_generator_mappings=true.

谢谢大家.

更新2:
对于未来的读者,您可以在下面找到一个有效的例子.

@Entity
@Table(name = "users")
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "USERS_SEQ")
    @SequenceGenerator(name = "USERS_SEQ", sequenceName = "SEQUENCE_USERS")
    private Long id;
}
Run Code Online (Sandbox Code Playgroud)

persistence.xml中

<persistence-unit name="testPU"> …
Run Code Online (Sandbox Code Playgroud)

java hibernate jpa hilo

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

如何覆盖Jersey 2.23中的内置异常映射器?

在我的一个项目中,我已经将Jersey从版本升级2.142.23.但是我遇到了一个问题需要花费很多时间.我的项目ExceptionMapper为a 定义了自己的ValidationException,但不幸的是,Jersey已经为这个异常提供了一个内置的异常映射器,我无法覆盖它.

我已正确注册(我检查过)我自己的映射器,如下所示:

@Provider
public class ValidationExceptionMapper implements 
         ExceptionMapper<ValidationException> {

    @Override
    public Response toResponse(ValidationException exception) {
        return Response.status(Status.BAD_REQUEST).build();
    }
}
Run Code Online (Sandbox Code Playgroud)

但它永远不会被召唤.泽西总是拿起来org.glassfish.jersey.server.validation.internal.ValidationExceptionMapper.我也试过@Priority为我的自定义映射器使用 注释,但不幸的是Jersey没有考虑它.

那么发生了什么?它在以前的Jersey版本中运行得非常好,所以它似乎是一个回归错误.

我放弃.有线索吗?

java jersey embedded-jetty jersey-2.0 weld2

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

JQuery - 如何找到匹配给定字符串的所有元素?

我坚持完成任务.

如何选择<span class="title">页面上的所有元素:

<div class="my-page">
    <span class="title">first</span>
    <span class="title">second</span>
    <span class="title">third</span>
    <span class="title">fourth</span>
    <span class="title">fifth</span>
</div>
Run Code Online (Sandbox Code Playgroud)

列表中存在的内容(以JSON格式从servlet获取)并存储在某个变量中?

我试过像:

success : function(data, statusText, jqxhr) {
  var arr = data.selectedTitles;
    jQuery.each(data.favTools, function(i, v) {
      var title = v;
      jQuery('span.title:contains(title)').css("text-decoration", "underline");
    });
}
Run Code Online (Sandbox Code Playgroud)

任何建议将不胜感激:)

javascript jquery

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

标签 统计

java ×2

embedded-jetty ×1

hibernate ×1

hilo ×1

javascript ×1

jersey ×1

jersey-2.0 ×1

jpa ×1

jquery ×1

weld2 ×1