如何在 JPA 中接受 Map<String,Object> 类型的元组

How to accept Tuple of type Map<String,Object> in JPA

目前 Hibernate 元组接受 Map<String,String> return 类型,但我需要 return 类型的 Map<String,Object> 如何实现。

示例:

class User {
  long id;
  String imageUrl;
  Address address;

 String username;

 String password;

  String email;

}

class Address {
long id;
String name;
String Street code;
}

我的条件查询:

    CriteriaBuilder builder = entityManager.getCriteriaBuilder();
    CriteriaQuery<Tuple> cq = builder.createTupleQuery();
    Root<User> root = cq.from(User.class);
    cq.multiselect(
        root.get("imageUrl"),
        root.get("address"));
    cq.where(builder.equal(root.get("id"),3));
    Tuple tuple = entityManager.createQuery(cq).getSingleResult();
    tuple.get(0);
// Error occurs for below code. (Stack over flow exception)
    tuple.get(1);

虽然获取 imageUrl 没有错误,但是当它尝试获取 address [地址类型不是字符串] 属性时休眠触发堆栈溢出异常,因为它试图将地址转换为字符串。

是否有任何其他方法可以实现此目的..?

问题出在 toString() 的地址上。

A​​ddress class 中的 toString() 方法尝试递归打印 User 对象。

这就是 Whosebug 的原因。

问题出在 toString() 上,它是 String

的地址