I've the following two entities,
User
@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<>();
}
}
Media
@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;
}
}
Both inherit from a BaseEntity
public abstract class BaseEntity {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private final Long id;
public BaseEntity() {
id = null;
}
}
I want to fetch all Media for an user. This is my code
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;
}
This doesn't compile, can someone help me form the right query and get the results. I'm new to Spring and Hibernate.
You can do it as shown below (It is an example to follow not solution. Implement solution accordingly you requirements ),
Query query = session.createSQLQuery(
"select * from stock s where s.stock_code = :stockCode")
.addEntity(Stock.class)
.setParameter("stockCode", "7277");
List result = query.list();
Your solution could be
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();
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.