Tag: 标准

REST – 使用Spring MVC返回创建的对象

我有一个REST调用接受一个JSON对象,比方说,一个人。 在我创建此对象(validation并保存到数据库)后,我需要返回新创建的JSON对象。 我认为标准做法是返回201 Accepted而不是立即返回对象。 但我的应用程序需要立即新创建的对象。 我有一个控制器方法,它接受一个POST调用,调用一个服务类,然后调用一个使用Hibernate创建对象的DAO。 一旦它保存到数据库,我正在调用另一个控制器方法,该方法获取人员的ID并返回对象。 我的问题是,这是更好的方法吗? 这是调用另一个Controller方法来获取新创建的对象。 或者POST调用本身应该返回Object。 主要问题是:调用另一种方法需要往返,我猜这是一种矫枉过正。 (服务 – > DAO-> Hibernate->数据库)。 相反,我认为我应该在相同的调用(从处理POST的方法)中保存后立即从数据库中获取对象。 这里的架构标准是什么?

针对不同字段值长度的Hibernate Criteria

我有一个实体,其中(字符串)字段大小= 10 @Column(length = 10) String code; 但是,字段的值长度可以是5或10.我想创建一个根据字段长度匹配该字段值的hibernate条件,如: final List codesLong= new ArrayList(); final List codesShort= new ArrayList(); … criteria.add(Restrictions.or( Restrictions.and(Restrictions.in(“code”, codesShort), Restrictions.eq(“code.length”, 5)), Restrictions.and(Restrictions.in(“code”, codesLong), Restrictions.eq(“code.length”, 10))) ); 但是……上面看起来不错,但显然不会起作用。 我不知道如何处理这个问题。 我会很感激任何提示。 谢谢 //解决方案(感谢Stanislav!)实体: @Column(length = 10) String code; @Formula(” length(code) “) int codelength; // create GETter method as well 标准: final List codesLong= new […]

HQL查询是否始终命中数据库并获得结果?

我正在经历hibernate以及何时使用Criteria vs HQL ,我的理解是使用Hibernate,每当我们在两个实例中通过Criteria或HQL查询数据库时,hibernate将得到结果集并放入内存然后当我们调用它时再次查询,数据将从内存中获取而不是点击该数据库,我的理解是否正确? 另外正如您从下面提到的评论中看到的那样,有人建议Hibernate Criteria会从会话中获取数据,而HQL总会进入并命中数据库,因此对HQL查询的任何数量的多次调用都将进入并命中数据库,如果这是那么HQL导致的问题多于解决问题。 请对此提出建议,因为我对这种情况有点困惑。 参考问题

Hibernate Criteria Query – 嵌套条件

我无法弄清楚如何使用Hibernate Criteria synthax创建这样的查询 select * from x where xa = ‘abc’ and (xb = ‘def’ or xb = ‘ghi’) 你知道怎么做吗? 我正在使用Hibernate Restriction静态方法,但我不明白如何指定嵌套的’或’条件

JPA Criteria Query API并且最后按null排序

我的问题是空值必须是最后一个按语句排序。 我的代码在下面拍了一下。 我使用javax持久标准构建器。 我的查询很复杂。 import javax.persistence.criteria.CriteriaBuilder; public Predicate getSomePredicate() { Predicate predicate = cb.conjunction();…. …predicate.getExpressions().add(cb.and(cb.or(cb.and(v1, v2), cb.and(s1, s2)))); EOrderByType orderType = EOrderByType.values()[orderBy] ; switch (orderType) { case PRICE: cq.where(predicate).orderBy(cb.asc(root.get(“price”))); break; case PRICE_HIGH_TO_LOW: cq.where(predicate).orderBy(cb.desc(root.get(“price”))); break; case CONSUPTION: cq.where(predicate).orderBy(cb.desc(root.get(“consume”))); break; default: break; } return cq.getRestriction(); } 如何使用条件生成器按价格实现订单空?

我可以用hibernate标准调用存储过程吗?

这是我的问题,我必须使用一个大的SP,并且没有时间在java中重写。 所以我正在使用Hibernate标准,我不知道我是否可以调用它。 谢谢大家。

许多关系的jpa标准

我在Java,Answer和Collaborator中有2个POJO类,处于多对多关系中。 class Answer { @ManyToMany(cascade = CascadeType.ALL) @JoinTable(name = “ANSWERS_COLLABORATORS”, joinColumns = { @JoinColumn(name = “aid”) }, inverseJoinColumns = { @JoinColumn(name = “cid”) }) private Set collaborators = new HashSet(0); } Class Answer有一套Collaborator ,但Collaborator没有一套Answer 。 我需要从Hibernate CriteriaQuery做的是找到id给出的答案的协作者。 我已经使用结果转换器使用Hibernate Criteria ( org.hibernate.Criteria )完成了这项工作,但是在使用CriteriaQuery时我遇到了CriteriaQuery ,因为我没有给出连接的答案列表。

JPA CriteriaBuilder子查询多选

我在jpa中有关于Subquery类的问题。 我需要创建带有两个自定义字段的子查询,但是子查询没有多选方法,而select方法有表达式输入参数(在查询中这是选择)和constact方法不合适。 关于加入子查询结果我也有疑问,有可能吗? 怎么样? 我有: 连锁活动 public class Chain { @Id @Column(name = “chain_id”) @GeneratedValue(generator = “seq_cha_id”, strategy = GenerationType.SEQUENCE) @SequenceGenerator(name = “seq_cha_id”, sequenceName = “SEQ_CHA_ID”, allocationSize = 1) private Long id; @Column(name = “user_id”) private Long userId; @Column(name = “operator_id”) private Long operatorId; @Column(name = “subject”) private String subject; @OneToMany(fetch = FetchType.LAZY, mappedBy = […]

带有exists子句的hibernate条件

我找不到一个容易解决的问题的解决方案。 假设有2个实体类: class A { Set bs; } class B { String text; } 如何创建一个条件查询,返回包含至少一个满足给定条件的B实体的所有A(如b.text =’condition’)?

Hibernate条件查询不同对象的不同属性

假设我有以下课程: class A { B getB(); C getC(); } class B { String getFoo(); } class C { int getBar(); } 我想在A上过滤标准,在不同的子类属性上有两个filter,例如: Criteria criteriaA = session.createCriteria(A.class); Criteria criteriaB = criteriaA.createCriteria(“b”).add(Restrictions.eq(“foo”, “Something”)); Criteria criteriaC = criteriaA.createCriteria(“c”).add(Restrictions.eq(“bar”, 0)); 我想要做的是使用“或”子句组合criteriaB和criteriaC,如: //this does not work criteriaA.add(Restrictions.disjunction().add(criteriaB).add(criteriaC)); 我怎么能做到这一点? 我在这里绊倒了一些API。