[英]Fetching One to Many object in Hibernate
我有以下兩個實體,
用戶
@Entity
@EqualsAndHashCode
public class User extends BaseEntity{
@Getter @Setter
private String msid;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "sender")
@Getter
private List<Media> sentList;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "receiver")
@Getter
private List<Media> receivedList;
protected User(){
super();
}
public User(String yguid) {
this();
this.yguid = yguid;
this.receivedList = new ArrayList<>();
this.sentList = new ArrayList<>();
}
}
媒體
@Entity
@EqualsAndHashCode
public class Media extends BaseEntity{
@Getter @Setter
private String mediaId;
@Getter @Setter
private String url;
@ManyToOne
@JoinColumn(name="sender")
@Getter @Setter
private User sender;
@ManyToOne
@JoinColumn(name="receiver")
@Getter @Setter
private User receiver;
public Media() {
super();
}
public Media(String mediaId, String url, User sender, User receiver) {
this();
this.mediaId = mediaId;
this.url = url;
this.sender = sender;
this.receiver = receiver;
}
}
兩者都繼承自BaseEntity
public abstract class BaseEntity {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private final Long id;
public BaseEntity() {
id = null;
}
}
我想為用戶獲取所有媒體。 這是我的代碼
public List<Media> getReceivedMediaForUser(User user){
Session session = sessionFactory.openSession();
Query query = session.createQuery("FROM Media m WHERE m.receiver = :user");
//parse query to get result
session.close();
//
return null;
}
這不會編譯,有人可以幫助我進行正確的查詢並獲得結果。 我是Spring和Hibernate的新手。
您可以按如下所示進行操作(這是一個遵循非解決方案的示例。請根據需要實施解決方案),
Query query = session.createSQLQuery(
"select * from stock s where s.stock_code = :stockCode")
.addEntity(Stock.class)
.setParameter("stockCode", "7277");
List result = query.list();
您的解決方案可能是
Session session = sessionFactory.openSession();
Query query = session.createQuery("select * FROM Media m WHERE m.receiver = :user")
.addEntity(Media.class)
.setParameter("user", "xyz");
List result = query.list();
session.close();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.