【发布时间】:2018-01-18 16:09:12
【问题描述】:
这里是 Spring Boot。我有以下两个 JPA 实体:
@Entity
@Table(name = "accounts")
public class Account {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "account_id")
private Long id;
// lots of stuff
@OneToOne(fetch = FetchType.EAGER, cascade = [CascadeType.PERSIST, CascadeType.MERGE])
@JoinColumn(name = "profile_id", referencedColumnName = "profile_id")
private Profile profile; // CAN be null
// Getters, setters & ctors
}
@Entity
@Table(name = "profiles")
public class Profile {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "account_id")
private Long id;
// doesn't really matter lots of stuff in here
// Getters, setters & ctors
}
有些帐户可能有个人资料,有些则没有(他们的个人资料将为空)。我想创建一个 CrudRepository impl 来执行此查询:
SELECT *
FROM profiles p
INNER JOIN accounts a
WHERE a.profile_id = null
基本上,让我获得所有“孤立”并与此处的任何帐户相关联的个人资料。
我很困惑我是否需要 CrudRepository<Long,Account> impl 或 CrudRepository<Long,Profile> impl 以及该 impl 的外观。到目前为止,我最好的伪尝试如下:
public interface ProfileRepository extends CrudRepository<Profile, Long> {
@Query("FROM Account act WHERE act.profile = null")
public Set<Profile> findOrphanedProfiles();
}
谁能帮我填补空白?
【问题讨论】:
标签: spring-boot spring-data-jpa jpql