java - 为什么我的结果列表是空的?

标签 java spring-mvc join

为什么我的结果列表是空的? 我有什么错吗?我的表中有两行,但结果始终为空。

表1:

http://screencast.com/t/4Uyaq8FFFsh

表2:

http://screencast.com/t/g08WGBmPVbu

参数电话(我在 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/

相关文章:

java - libGDX - 如果我播放声音,我的 Android 手机会口吃/有微延迟

java - 收到错误消息说类未与命名查询映射

java - 如何使用 Java Mail API 获取有限数量的消息

java - Spring的InternalResourceViewResolver中使用<c :url> or ${pageContext. request}获取servlet路径

PHP/mySQL - 如何将嵌套行提取到多维数组中

ruby-on-rails - 访问 HABTM 连接表记录

sql - 使用 Group By 从多个表中获取数据

java - 如何使用 `println` 在单个语句中格式化和打印多种数据类型?

java - HQL 错误 : Path expected for join

java - Spring MVC - 从应用程序上下文外部访问静态资源