Spring Data JPA-返回对象的最佳方法?

我有这样的对象:

@Entity

public 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 annotation

public 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

回到顶部