我看过this 我有类似的问题,但我想从四个字段中只得到两个 - 例如:id,name,dateOfBirth,weight中只有id和name。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Fragment pFragment = getSupportFragmentManager().findFragmentById(R.id.content);
if (pFragment instanceof CurrentPanchangDialog) {
if (pFragment != null) {
pFragment.onActivityResult(requestCode, resultCode, data);
}
}
super.onActivityResult(requestCode, resultCode, data);
}
如果我使用查询: public interface ICatDAO extends CrudRepository<Cat,Long> {
@Query(value = "SELECT c.id, c.name FROM Cat c")
public List<Cat> findAll();
//...
}
我会获得对象列表类型&#39; Cat&#39;但是包含所有字段。
如果我使用查询:@Query(value = "SELECT c FROM Cat c")
我会获得对象列表类型&#39;对象&#39;这就是问题所在。在这种情况下我该怎么做?
答案 0 :(得分:2)
创建CatDto
:
public class CatDto {
private Long id;
private String name;
public CatDto(Long id, String name) {
this.id = id;
this.name = name;
}
// getters, setters and other stuff you need
}
然后编辑你的回购:
public interface CatRepo extends CrudRepository<Cat,Long> {
//...
@Query("select new ...CatDto(c.id, c.name) from Cat c")
public List<CatDto> getCatDtos();
}
您将获得CatDto
的列表。
...CatDto(...)
- 是CatDto
构造函数的fully qualified name。对于考试com.example.mycatproject.domain.CatDto
。
另一种方法是使用“projection”界面进行DTO:
public interface CatDto {
Long getId();
String getName();
}
public interface CatRepo extends CrudRepository<Cat,Long> {
//...
@Query("select c.id as id, c.name as name from Cat c")
public List<CatDto> getCatDtos();
}