如何在 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()
的地址上。
Address class 中的 toString()
方法尝试递归打印 User 对象。
这就是 Whosebug
的原因。
问题出在 toString() 上,它是 String
的地址
目前 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()
的地址上。
Address class 中的 toString()
方法尝试递归打印 User 对象。
这就是 Whosebug
的原因。
问题出在 toString() 上,它是 String
的地址