为什么我的结果列表是空的? 我有什么错吗?我的表中有两行,但结果始终为空。
表1:
表2:
参数电话(我在 Debug模式下看到)与表中相同。
List<IAppEntity> list = entityManager.createQuery(
"SELECT a FROM IAppsFriends c" +
" JOIN c.apps a" +
" WHERE c.phone=:phone")
.setParameter("phone", phone).getResultList();
IAppsFriends:
@Entity
@Table(name = "IAppsFriends")
public class IAppsFriends {
@GeneratedValue
@Id
private int id;
@OneToMany(mappedBy = "packageName")
private List<IAppEntity> apps;
private String phone;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public List<IAppEntity> getApps() {
return apps;
}
public void setPackageName(List<IAppEntity> apps) {
this.apps = apps;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
}
IAppEntety:
@Entity
@Table(name = "IApp")
public class IAppEntity {
@Id
private String packageName;
public IAppsFriends getFriends() {
return friends;
}
public void setFriends(IAppsFriends friends) {
this.friends = friends;
}
@ManyToOne
@JoinColumn(name="packageName", insertable = false, updatable = false)
private IAppsFriends friends;
private String icon;
private String name;
public String getPackageName() {
return packageName;
}
public void setPackageName(String packageName) {
this.packageName = packageName;
}
public String getIcon() {
return icon;
}
public void setIcon(String icon) {
this.icon = icon;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
最佳答案
您的映射不正确:
@OneToMany(mappedBy = "packageName")
private List<IAppEntity> apps;
这意味着这个 OneToMany 关联是在 IAppEntity
实体的 packageName
字段上声明的 ManyToOne 关联的反面。但字段 packageName
声明为
@Id
private String packageName;
所以它根本不是ManyToOne。
关于java - 为什么我的结果列表是空的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32676984/