Java 如何接受Map类型的元组<;字符串,对象>;在JPA中

Java 如何接受Map类型的元组<;字符串,对象>;在JPA中,java,hibernate,spring-boot,hibernate-criteria,Java,Hibernate,Spring Boot,Hibernate Criteria,目前Hibernate tuple接受Map返回类型,但我需要Map返回类型如何实现这一点 示例: class User { long id; String imageUrl; Address address; String username; String password; String email; } class Address { long id; String name; String Street code; } CriteriaBuilde

目前Hibernate tuple接受
Map
返回类型,但我需要
Map
返回类型如何实现这一点

示例:

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);
我的条件查询:

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);
CriteriaBuilder=entityManager.getCriteriaBuilder();
CriteriaQuery cq=builder.createTupleQuery();
Root=cq.from(User.class);
多重选择(
root.get(“imageUrl”),
root.get(“地址”);
其中(builder.equal(root.get(“id”),3));
Tuple Tuple=entityManager.createQuery(cq.getSingleResult();
tuple.get(0);
//以下代码出现错误。(堆栈溢出异常)
tuple.get(1);
获取
imageUrl
时没有错误,但当它尝试获取
address
[address type not string]属性时,hibernate会触发堆栈溢出异常,因为它试图将地址转换为字符串


有没有其他方法来实现这一点

问题在于
toString()
将地址设置为字符串

其中Address类中的
toString()
方法尝试递归打印用户对象


这就是toString()出现堆栈溢出的原因要字符串的地址是哪个

@gnanajeyam95在
用户
地址
上发布您的全部代码此问题与元组试图再次递归获取地址和该用户有关。@Oneguy我更新了完整的代码。您确定这是
用户
地址
的全部代码,并且没有删除吗有什么方法使代码更简单吗?你是在起诉Lombok吗?@KarolDowbecki这是实际的代码你可以添加
StackOverflowerError
stack跟踪吗?