具有实体关系的Spring数据规范

问题描述

我有这个实体:

@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Entity
public class Employee implements Serializable {
    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "EMPLOYEE_ID")
    private Long employeeId;

   @Column(name = "FK_OTHER_ENTITY")
    private Long otherEntityId;

.......

}

和实体2:

 @Data
    @Builder
    @AllArgsConstructor
    @NoArgsConstructor
    @Entity
    public class OtherEntity implements Serializable {
        private static final long serialVersionUID = 1L;
    
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        @Column(name = "OTHER_ID")
        private Long otherEntityId;
    
       @Column(name = "DATE_FirsT")
        private Date dateFirst;

        @Column(name = "DATE_LAST")
        private Date dateLast;
    
    .......
    
    }

我想创建第一个实体的规范,但是我有这个sql

select a.* from employee a,other entity b where a.FK_OTHER_ENTITY = b.OTHER_ID AND "DATE1 OF INPUT" >= b.DATE_FirsT and "DATE2 of INPUT" <= b.DATE_LAST

我如何访问具有简单外键而不是关系的其他实体的属性

感谢您的回复

解决方法

您可以使用Hibernate 5.1中的临时连接:

How to join unrelated entities with JPA and Hibernate

Hibernate docs: Explicit joins

只需使用 inner join或带有left join子句的on

如果要使用SQL(而不是JPQL),则可以使用普通的SQL连接。