我在应用程序中使用 @oneToMany 注释从另一个表中获取数据。有两个实体类TopArtists.java 和Subscribe.java。这是TopArtists.java
@Id
@GeneratedValue
@Column(name="id")
private long id;
@Column(name="full_name")
private String fullName;
@Column(name="username")
private String uname;
@OneToMany(cascade=CascadeType.ALL)
@JoinColumn(name="subscriber_id")
private List<Subscribe> subs;
//Getters and setters
这里是Subscribe.java
@Id
@GeneratedValue
@Column(name="id")
private long id;
//private String status;
@Column(name="subscribed_id")
private String subID;
@Column(name="subscriber_id")
private long subrID;
//Gettes and setters
这里我根据 subscribed_id 从订阅表中获取数据。这是我的 DAO 类
@SuppressWarnings({ "unchecked", "rawtypes" })
public List<TopUsers> getTopArtists() throws Exception {
session = sessionFactory.openSession();
Criteria cr = session.createCriteria(TopUsers.class);
cr.addOrder(Order.asc("rank"));
List topArtists = cr.list();
tx = session.getTransaction();
session.beginTransaction();
tx.commit();
return topArtists;
}
这里的结果进入列表topArtists。现在我想检查 Subscribe 表是否有与 subscribed_id 对应的数据,所以我想检查 topArtist 列表中的订阅列表是否为空,因为如果列表为空,那么我想为我的 Subscribe 变量设置另一个值。请建议我如何做到这一点。
提前致谢。
最佳答案
您可以使用iterator 迭代 List<TopUsers>
并检查 List<Subscribe>
的列表对于每一个,这是您需要的代码:
List<TopUsers> usersList = getTopArtists();
Iterator<TopUsers> iter = usersList.iterator();
while(iter.hasNext()){
//Getb the iterated element
TopUsers user = (TopUsers) iter.next();
//Check for the subs
//use the getSubs() getter to get the list of subs
if(user.getSubs().isEmpty()) {
System.out.println("No subs found");
}
}
关于java - 如何在 hibernate 响应中检查列表内的列表是否为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31698950/