簡體   English   中英

使用JPA條件API查詢

[英]Query with JPA criteria API

試圖建立此查詢,但我想我丟失了一些東西。 以下是涉及的類:

  1. 用戶
  2. 飲食
  3. 日常飲食

這是我實體的相關部分(一個非常簡單的部分):

public class User {

@Column(name = "User_Name", nullable = false, length = 15, unique = true)
public String userName;

@OneToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER, optional = true)
@PrimaryKeyJoinColumn
public Diet userDiet;

}

public class Diet {

@OneToOne(optional = false)
@JoinColumn(name = "User_Id")
protected User user;

@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL, orphanRemoval = true)
@JoinTable(name = "UsersDiets_DailyDiets", joinColumns = @JoinColumn(name = "User_Id"), inverseJoinColumns = @JoinColumn(name = "DailyDiet_Id"))
protected Collection<DailyDiet> userDailyDiets;
}

public class DailyDiet {

    @Column(name = "Day")
    protected long day;
}

我只想簡單地介紹特定日期的特定用戶的每日飲食:

public UserDiet findByUserNameAndDay(String userName, long day)

但是似乎無法使其正常工作。 我應該為此建立2個不同的CriteriaQuery對象嗎? 如果創建兩個不同的謂詞,該如何使用? 如果有人可以通過這個簡單的查詢幫助我,請多謝(我對JPA標准API還是很陌生)。

謝謝!!!

通過添加到DailyDiet類中來解決它:

@ManyToOne
protected Diet userDiet;

然后在我的DailyDietDao中,以下謂詞:

Predicate userNameCondition = qb.equal(p.get(DailyDiet_.userDiet).get(UserDiet_.user).get(BaseUser_.userDetails).get(UserDetails_.userName),
        userName);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM