草庐IT

QueryDSL-JPA

全部标签

java - 将 IN 子句列表添加到 JPA 查询

我构建了一个NamedQuery,如下所示:@NamedQuery(name="EventLog.viewDatesInclude",query="SELECTelFROMEventLogelWHEREel.timeMark>=:dateFromAND"+"el.timeMark我想要做的是用一个项目列表而不是一个项目来填写参数:inclList。例如,如果我有一个newList(){"a","b","c"}我如何在:inclList参数中得到它?它只让我编码一个字符串。例如:setParameter("inclList","a")//workssetParameter("inclLi

java - JPA 和 Hibernate 中的 persist() 和 merge() 有什么区别?

Hibernate中persist()和merge()有什么区别?persist()可以创建一个UPDATE&INSERT查询,例如:SessionFactorysef=cfg.buildSessionFactory();Sessionsession=sef.openSession();Aa=newA();session.persist(a);a.setName("Mario");session.flush();在这种情况下,查询将像这样生成:Hibernate:insertintoA(NAME,ID)values(?,?)Hibernate:updateAsetNAME=?where

java - Hibernate JPA 序列(非 Id)

是否可以对不是标识符/不是复合标识符的一部分的某些列使用数据库序列?我使用hibernate作为jpa提供程序,并且我有一个表,其中包含一些生成值(使用序列)的列,尽管它们不是标识符的一部分。我想要的是使用序列为实体创建一个新值,其中序列的列是NOT(部分)主键:@Entity@Table(name="MyTable")publicclassMyEntity{//...@Id//...etcpublicLonggetId(){returnid;}//noteNO@Idhere!butthisdoesn'twork...@GeneratedValue(strategy=Generatio

java - 单向和双向 JPA 和 Hibernate 关联有什么区别?

单向关联和双向关联有什么区别?由于db中生成的表都是一样的,所以我发现唯一的区别是双向关联的每一侧都有一个引用,而单向没有。这是一个单向关联publicclassUser{privateintid;privateStringname;@ManyToOne@JoinColumn(name="groupId")privateGroupgroup;}publicclassGroup{privateintid;privateStringname;}双向关联publicclassUser{privateintid;privateStringname;@ManyToOne@JoinColumn(n

java - JPA getSingleResult() 或 null

我有一个insertOrUpdate方法,它在Entity不存在时插入它,如果存在则更新它。要启用此功能,我必须findByIdAndForeignKey,如果它返回null如果没有则插入,然后更新。问题是如何检查它是否存在?所以我尝试了getSingleResult。但是如果publicProfilefindByUserNameAndPropertyName(StringuserName,StringpropertyName){StringnamedQuery=Profile.class.getSimpleName()+".findByUserNameAndPropertyName"

java - 对于大型项目,Spring Data JPA 与 Hibernate 有何不同?

我很难决定是否应该在新项目中坚持使用Hibernate,还是继续使用JPA和新的SpringData实现。SpringData框架适用于大型项目还是具有适度查询要求的小型项目?虽然我确实看到了使用@Query注释在代码缩减方面的优势,但您如何处理动态查询?当你想实现一个相当复杂的save()方法时怎么办?文档说要创建一个自定义接口(interface)和实现,您的主存储库实现,但是如果您需要访问crud存储库本身的任何super方法怎么办?crud存储库实现了自定义存储库-而不是相反。这似乎是一个奇怪的设计。我非常不确定这个框架是否能够应对复杂和大型应用程序的挑战。我从来没有遇到过Hi

java - 请引用 JPA @Column 注释解释 insertable=false 和 updatable=false

如果一个字段被注解了insertable=false,updatable=false,是不是意味着不能插入值也不能改变已有的值?为什么要这样做?@EntitypublicclassPerson{@Id@GeneratedValue(strategy=GenerationType.AUTO)privateLongid;@OneToMany(mappedBy="person",cascade=CascadeType.ALL)privateListaddresses;}@EntitypublicclassAddress{@Id@GeneratedValue(strategy=Generati

java - 如何在 Spring Controller 中获取与 JPA 和 Hibernate 的 FetchType.LAZY 关联

我有一个Person类:@EntitypublicclassPerson{@Id@GeneratedValueprivateLongid;@ManyToMany(fetch=FetchType.LAZY)privateListroles;//etc}具有惰性的多对多关系。在我的Controller中@Controller@RequestMapping("/person")publicclassPersonController{@AutowiredPersonRepositorypersonRepository;@RequestMapping("/get")public@Response

java - JPA CascadeType.ALL 不删除孤儿

我在使用具有以下映射的JPA删除孤立节点时遇到问题@OneToMany(cascade=CascadeType.ALL,fetch=FetchType.EAGER,mappedBy="owner")privateListbikes;我遇到了数据库中存在孤立角色的问题。我可以使用注释org.hibernate.annotations.CascadeHibernate特定标签,但显然我不想将我的解决方案绑定(bind)到Hibernate实现中。编辑:似乎JPA2.0将包含对此的支持。 最佳答案 如果您将它与Hibernate一起使用,

java - 使用JPA和Hibernate时JOIN和JOIN FETCH有什么区别

请帮助我了解在哪里使用常规JOIN以及在哪里使用JOINFETCH。例如,如果我们有这两个查询FROMEmployeeempJOINemp.departmentdep和FROMEmployeeempJOINFETCHemp.departmentdep它们之间有什么区别吗?如果是,什么时候使用? 最佳答案 在这两个查询中,您使用JOIN来查询至少关联一个部门的所有员工。但是,不同之处在于:在第一个查询中,您只返回Hibernate的Employes。在第二个查询中,您将返回Employes和所有关联的部门。因此,如果您使用第二个查询,