小编Jan*_*Jan的帖子

在Hibernate中绕过GeneratedValue(合并数据不在db?中)

我的问题与[1][2]中描述的相同.我需要手动设置默认的自动生成值(为什么?导入旧数据).如[1]中所述,使用Hibernate entity = em.merge(entity)将会起到作用.

不幸的是,它没有.我既没有得到错误也没有任何其他警告.该实体不会出现在数据库中.我正在使用Spring和Hibernate EntityManager 3.5.3-Final.

有任何想法吗?

java orm spring hibernate jpa

37
推荐指数
5
解决办法
3万
查看次数

RESTeasy + Server模拟+未找到ExceptionMapper

我有一个ExceptionMapper使用RESTeasy 2.0.1.GA在JAX-RS中使用的场景.这很好用.

我现在想用RESTeasy的模拟机制来测试整个事情.不幸的是我的ExceptionMapper-provider没有注册.我错过了什么?

POJOResourceFactory factory = new POJOResourceFactory(SomeWebResource.class);

Dispatcher dispatcher = MockDispatcherFactory.createDispatcher();
dispatcher.getRegistry().addResourceFactory(factory); 

MockHttpRequest request = MockHttpRequest.get("url");
MockHttpResponse response = new MockHttpResponse();

// here my exception is thrown
dispatcher.invoke(request, response);

// but I expect the response to be 404 (which works outside the mock setup)
Assert.assertEquals(response.getStatus(), 404);
Run Code Online (Sandbox Code Playgroud)

unit-testing jax-rs mocking resteasy

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

JPA 2 + Criteria API +获取子查询中最旧的元素

我有两个实体(DatasetItem),第一个实体包含后者的列表.

@Entity
class Dataset {
    @Id long id;
    List<Item> items;
}

@Entity
class Item {
    @Id long id;
    @Temporal Date date;
    String someCriteria;
}
Run Code Online (Sandbox Code Playgroud)

现在我期待的任何数据集,这与引用的项目someCriteria ="X"作为最古老的项目中数据集的列表(它的日期是在此之前,此数据集所引用的所有其他人的).

这应该与JPA-2.0的Criteria API一起使用,但作为SQL查询的答案也可以.

这就是它现在的样子:

Subquery<Item> _subquery = p_criteria.subquery(Item.class);
Root<Item> _itemRoot = _subquery.from(Item.class);
_subquery.select(_itemRoot);

// correlate
_subquery.correlate(_datsetRoot);

// type check
Predicate _typeP = p_builder.equal(_itemRoot.get(Item_.someCriteria), "x");

<additional predicates>
...

// reference check
_subquery.where(_typeP);

return p_builder.exists(_subquery);
Run Code Online (Sandbox Code Playgroud)

我想创建子查询,按日期排序并检查第一个子查询.不幸的是,JPA-2.0不允许在子查询(或连接)中进行排序(据我所见).我的第二个想法是获取MAX(date),大多数数据库应该支持这个想法.同样如此,支持MAX,ABS,......仅适用于数字.

编辑:使用一个已排序的子查询,它看起来像这样(MSSQL):

SELECT d.id
FROM Dataset d
WHERE EXISTS …
Run Code Online (Sandbox Code Playgroud)

java hibernate criteria-api jpa-2.0

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

Hibernate:用继承覆盖sql-delete

我有一个实体A,B extends A并尝试使用联接继承策略进行软删除.

@Entity
@Inheritance(strategy = InheritanceType.JOINED)
@SQLDelete("UPDATE A SET deleted = 1 WHERE id = ?")
A {

    @Id long id;
    boolean deleted;
}

@Entity
B extends A {}
Run Code Online (Sandbox Code Playgroud)

似乎Hibernate正确地将表设置Adeleted = 1,但也删除了表中的整个条目B.当然,我想保留这个条目.

有什么想法吗?

我正在使用Hibernate 3.5.5和基于注释的实体定义.尝试了Hibernate 3.6.2.

java hibernate soft-delete

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