我下面的兩個實體,抓取一對多對象在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的新手。
什麼是編譯錯誤?你也沒有設置':user'參數 –
請問你能否添加特定的錯誤。這是代碼編譯錯誤還是在運行時查詢解析失敗? – Ruben