【发布时间】:2020-12-16 18:20:50
【问题描述】:
我不知道如何创建 JPA 查询以从我的表中获取所有记录:
@Entity
@Table(name = "A")
public class A{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(nullable = false, updatable = false)
private Long id;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "message_id")
private Message;
@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "user_id")
private User user;
}
@Entity
@Table(name="message")
@Getter
@Setter
public class Message{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(nullable = false, updatable = false)
private Long id;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "account_id", foreignKey = @ForeignKey(name = "FK_account_to_message"))
private Account account; //and then search by Account.id
}
所以我在 A 表中有 2 种类型的对象(有时对象是从电子邮件创建的,有时是从文件创建的):
- 一种没有
user_id(null)的类型->然后我必须通过Message -> Account -> Id搜索找到所有A对象 - 第二类
user_id-> 我们可以通过user_id列中的值直接获取A对象
我想获取特定user_id 的所有记录 -> 如何以最有效的方式做到这一点?我不想在存储库中调用 2 个方法:
User user = userService.getEmail();
List<A> aObjects= Stream.concat(ARepository.findByMessage_Account_Id(user.getId()).orElse(new ArrayList<>()).stream(),
aRepository.findByUser_Id(user.getId()).orElse(new ArrayList<>()).stream()).collect(Collectors.toList());
是否可以创建一个存储库方法来查找 2 个不同对象的所有记录(一个带有 user_id,第二个不带有 user_id)?
【问题讨论】:
标签: spring-boot hibernate spring-data-jpa