JAVA JPA 使用接口返回几个实体变量及其名称
JAVA JPA returning few Entity variables with their names using interface
假设我有一个简单的 class:
public class Human{
private String id;
private String name;
priavte String surname;
priavte String something;
priavte String something2;
//geters setters
}
并且我已经声明了一个接口
public interface IHuman{
String getId;
String getName;
}
在我的存储库中,我调用:
@Query("select r from Human r")
Page<IHuman> getIdAndName();
反过来 returns 我是一个带有 id 和名称的 IHuman 属性数组,但是当解析为 JSON 它没有变量名称并且 returns 只有值:
"content":[["id1","jeff"],["id2","Jones"],...]
所以我的问题是:是否可以使用接口将变量连接到它们相应的值,以获得类似的东西:
"content":[["id":"id1","name":"jeff"],["id":"id2","name":"Jones"],...]
您正在写作
@Query("select r from Human r")
Page<IHuman> getIdAndName();
return 整个 Human
对象。
但是你只需要 id 和 name,所以只在查询中检索它,比如
@Query("select r.id, r.name from Human r")
Page<IHuman> getIdAndName();
这应该将您的界面映射到您的价值观。
我真的不知道 how/why 这行得通,但是没问题:
将查询切换为:
@Query("SELECT r.id as Id, r.name as Name from human r)
Page<IHuman> getIdAndName();
并在我的 IHuman class 中添加:
@Value("#{target.Id}")
String getId();
@Value("#{target.Name}")
String getName();
假设我有一个简单的 class:
public class Human{
private String id;
private String name;
priavte String surname;
priavte String something;
priavte String something2;
//geters setters
}
并且我已经声明了一个接口
public interface IHuman{
String getId;
String getName;
}
在我的存储库中,我调用:
@Query("select r from Human r")
Page<IHuman> getIdAndName();
反过来 returns 我是一个带有 id 和名称的 IHuman 属性数组,但是当解析为 JSON 它没有变量名称并且 returns 只有值:
"content":[["id1","jeff"],["id2","Jones"],...]
所以我的问题是:是否可以使用接口将变量连接到它们相应的值,以获得类似的东西:
"content":[["id":"id1","name":"jeff"],["id":"id2","name":"Jones"],...]
您正在写作
@Query("select r from Human r")
Page<IHuman> getIdAndName();
return 整个 Human
对象。
但是你只需要 id 和 name,所以只在查询中检索它,比如
@Query("select r.id, r.name from Human r")
Page<IHuman> getIdAndName();
这应该将您的界面映射到您的价值观。
我真的不知道 how/why 这行得通,但是没问题: 将查询切换为:
@Query("SELECT r.id as Id, r.name as Name from human r)
Page<IHuman> getIdAndName();
并在我的 IHuman class 中添加:
@Value("#{target.Id}")
String getId();
@Value("#{target.Name}")
String getName();