Tag: 标准

JPA:没有@OneToMany注释的左连接

我的数据库中有一个OneToMany关系,但我不希望Hibernate直接管理它。 这种关系是翻译,但DTO代表自己是翻译的注册表: @Entity @Table(name = “my_table”) public class MyTable { @Id @Column(name = “id”, nullable = false, unique = true) private Integer id; @Transient private String lang; @Transient private String text; // getters and setters … } @Entity @Table(name = “my_table_translation”) public class MyTableTranslation { @Id @Column(name = “id”, nullable = false, unique = false) […]

重用多个存储库标准的最佳方法是什么?

我有一个存储库层,它有许多方法组合,以匹配搜索标准。重用此标准的最佳方法是什么? 我认为像findByNameAndIdAndBirthdayAndAccounaNumber这样的方法名称并不是一个好主意! 谢谢 ! public Order findByIdAndName(String orderId) { List list = entityManager.createNamedQuery(OrderEntity.QUERY_FIND_BY_ORDERID_AND_NAME, OrderEntity.class) .setParameter(“orderId”, orderId) .setParameter(“name”, name).getResultList(); if (list.isEmpty()) { return null; } OrderEntity orderEntity = list.get(0); return toOrder(orderEntity); }

@ManyToMany关系中表的JPA 2.0 CriteriaQuery

我在@ManyToMany关系中有两个实体。 // Output has 4 other @ManyToOne relationships if that matters @Entity @Table public class Output { @Id public String address; @ManyToMany(targetEntity = Interval.class, cascade = CascadeType.ALL, fetch = FetchType.LAZY) @JoinTable(name = “output_has_interval”, joinColumns = {@JoinColumn(name = “output_address”, referencedColumnName = “address”)}, inverseJoinColumns = {@JoinColumn(name = “interval_start”, referencedColumnName = “start”), @JoinColumn(name = “interval_end”, referencedColumnName = “end”)}) […]

使用Hibernate Criteria和Oracle,有什么更好的方法与时间一起工作?

我想按时间选择实体。 我的Oracle DBMS的字段类型为DATE,其中包含日期和时间。 这是我的代码。 如何按时间标准选择数据? Calendar timeCal = new GregorianCalendar(0,0,0,0,0,0); Date timeMin = timeCal.getTime(); timeCal.add(Calendar.HOUR_OF_DAY, 1); Date timeMax = timeCal.getTime(); if (minDate != null && maxDate != null) criteria.add(Restrictions.between(“eventDate”, minDate, maxDate)); if (onDate != null) { Calendar calendar = Calendar.getInstance(); calendar.setTime(onDate); calendar.add(Calendar.DAY_OF_MONTH, 1); criteria.add(Restrictions.between(“eventDate”, onDate, calendar.getTime())); } if(minTime!=null&&maxTime!=null){ /* How to add Restriction on eventDate […]

映射键值的Hibernate Criteria

我的hibernate实体中有以下属性: @ElementCollection(targetClass = String.class, fetch = FetchType.EAGER) @CollectionTable(name=”FORMDATA”, joinColumns = @JoinColumn(name=”FORM_ID”)) private Map formData; 我想用hibernate Criteria进行查询,我希望将表单与给定的键值对匹配,如下所示: criteria.add(Restrictions.like(“formdata.key”, “%”+value+”%”).ignoreCase()); 其中’key’和’value’通过方法参数传递。 谁知道这应该如何工作? 对我来说,hibernate文档对此并不清楚。 非常感谢,B。

Hibernate Criteria API相当于HQL select子句?

我想对两个持久化类进行组合查询。 在HQL中,这可以通过select子句来实现, select new Family(mother, mate, offspr) from DomesticCat as mother join mother.mate as mate left join mother.kittens as offspr 在上面的例子中,Family是一个联合类,DemesticCat作为它的construtor params 什么是HQL select子句的Criteria等价物?

Hibernate – TypedQuery.getResultList()返回同一对象的列表

以下是对问题的更多和更好的描述: 我做一个简单的选择查询。 返回列表包含确切的记录/对象数,就好像我在DB中执行相同的查询一样,但问题是所有对象都相同/相同。 例如,这是DB中的结果(我删除了空值): 26801 01-JAN-00 7 31-DEC-99 7 Obere Kirchstr。 26 CH 8304 Walliselln 26801 01-JAN-00 2 31-DEC-99 2 Obere Kirchstr。 26 CH 8304 Walliselln 这是变量地址的内容,因为我可以在执行查询后的调试期间在Eclipse中看到它: 地址ArrayList(id = 81) elementData Object [10](id = 86) [0] DLDBAddress(id = 82) [1] DLDBAddress(id = 82) [2] null … modCount 1 2号 DLDBAddress [persid = 26801,valPeriodStart = 1900-01-01,valPeriodEnd […]

集合中元素的hibernate标准

我有一个实体包含一组另一个实体。 Entity1包含Set entityTwos 我想为entityTwos中的“id”字段创建搜索条件。 我搜索过,但没有得到任何答案。 有人有想法吗? 谢谢,斯里兰卡

使用JPA(Hibernate)查找包含给定记录的页面

如何知道JPA查询中记录的位置? 我有一个服务返回分页结果,或多或少实现了一个带有此签名的方法: List getRecordsPage(long page, int pageSize); 调用它时,我只需创建一个查询并进行如下配置: TypedQuery query = entityManager.createQuery(criteriaQuery); query.setFirstResult(page * pageSize); query.setMaxResults(pageSize); 这会将结果分页。 这是按预期工作的,非常简单。 问题 我的另一个要求是实现一个方法来检索包含特定记录的页面。 使用以下签名实现方法: List getRecordsPage(Record record, int pageSize); 此方法需要生成记录所在的右页。 例如,对于getRecordsPage(RECORD4, 2)调用,考虑数据库状态: 1. RECORD1 2. RECORD2 3. RECORD3 4. RECORD4 5. RECORD5 返回的页面应为2,包含[RECORD3, RECORD4] 。 ORDER BY参数始终设置,可以是多个字段。 解决方案直到现在 到目前为止,我有一些解决方案: 一点也不好,但它解决了这个问题: 使用提供的查询,我只选择没有分页的id,只执行indexOf以找到它的位置,并根据我可以找到记录页面的位置,然后使用getRecordsPage(long page, int pageSize)执行常规过程getRecordsPage(long page, int pageSize)已经实施。 不太好,因为与数据库高度耦合: […]

JPA Select Count Distinct

我需要一个相对简单的查询,但JPA很难创建它。 SQL变体看起来像这样: SELECT COUNT(DISTINCT OrderID) AS DistinctOrders FROM Orders WHERE CustomerID=7; [编辑:OrderID不是主键。 可以有更多的OrderId在表中等于] 我需要使用传递给my方法的变量设置CustomerID 。 我在CriteriaQuery distinct()上找到了文档,但我似乎无法将它们全部包装在一起。 这是我到目前为止: CriteriaBuilder cb = this.em.getCriteriaBuilder(); CriteriaQuery c = cb.createQuery( Order.class ); Root order = c.from( Order.class ); Path customerID = order.get( “customerID” ); c.where( cb.equal( customerID, theId ) );