如何从实体获取单个字段值的列表?

时间:2019-01-11 12:04:22

标签: jpa jhipster

我正在研究Jhipster应用程序Java服务和Angular 5 UI。我有一个工作正常的实体,但是我需要从该实体获取一个字段(客户)之一的列表,以显示在UI中。

在这种情况下,我正在使用一个包含客户名称的单个表,因此我试图获取一个只读的唯一列表。

我尝试创建一个自定义存储库,并将一个函数添加到服务中,即Impl类和资源类。

启动时失败,无法在实体上找到属性getClientNameList。

我已经展示了Entity类,自定义存储库以及我添加到PostsServiceImpl类中的方法的代码片段。

有人可以引导我朝正确的方向前进吗?

谢谢。

// Entity Class //
@Entity
@Table(name = "posts")
public class Posts implements Serializable {
    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(name="client_name")
    private String clientName;

    // Other fields here
    ...
}

// Custom Repository //
@Repository
public interface JobsRepositoryCustom {
    List<String> getClientNameList();
}

// PostsServiceImpl //
public class PostsServiceImpl implements PostsService {

    EntityManager entityManager;

    public List<String> getClientNameList() {

        Query query = entityManager.createNativeQuery("SELECT clientName FROM Posts", Posts.class);
        return query.getResultList();
    }
}

1 个答案:

答案 0 :(得分:1)

您的错误可能更具体地是未找到clientName。找不到它是因为,如果您运行本机查询,则需要使用数据库列名。

所以改变:

"SELECT clientName FROM Posts"

"SELECT client_name FROM Posts"