簡體   English   中英

在Hibernate中獲取一對多對象

[英]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.

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