Spring Data JPA-返回对象的最佳方法?
我有这样的对象:
@Entitypublic class DocumentationRecord {
@Id
@GeneratedValue
private long id;
private String topic;
private boolean isParent;
@OneToMany
private List<DocumentationRecord> children;
...
}
现在我只想获取主题和ID。有没有办法像这样获得它:
[{
id: 4234234,
topic: "fsdfsdf"
},...
]
因为即使只使用此查询
public interface DocumentationRecordRepository extends CrudRepository<DocumentationRecord, Long> { @Query("SELECT d.topic as topic, d.id as id FROM DocumentationRecord d")
List<DocumentationRecord> getAllTopics();
}
我只能得到这样的记录:
[ [
"youngChild topic",
317
],
[
"oldChild topic",
318
],
[
"child topic",
319
],
]
我不希望获得具有属性ID和主题的对象数组。实现这一目标的最好方法是什么?
回答:
在Spring Data JPA中,您可以使用投影:
:
public interface IdAndTopic { Long getId();
String getTopic();
}
(DTO):
@Value // Lombok annotationpublic class IdAndTopic {
Long id;
String topic;
}
然后在您的仓库中创建一个简单的查询方法:
public interface DocumentationRecordRepository extends CrudRepository<DocumentationRecord, Long> { List<IdAndTopic> findBy();
}
您甚至可以创建动态查询方法:
List<T> findBy(Class<T> type);
然后像这样使用它:
List<DocumentationRecord> records = findBy(DocumentationRecord.class);List<IdAndTopic> idAndTopics = findBy(IdAndTopic.class);
以上是 Spring Data JPA-返回对象的最佳方法? 的全部内容, 来源链接: utcz.com/qa/412334.html