春季数据投影中的自定义日期时间格式



我有一个弹簧数据投影,它内联了一些关系字段。应用投影时,日期时间字段不再输出为 iso8601(就像没有投影一样(,而是以另一种格式输出。

如何将投影格式设置为ISO8601日期时间?这是我目前的预测:

package io.cocept.model.projection;
import io.cocept.model.Meeting;
import io.cocept.model.User;
import org.springframework.data.rest.core.config.Projection;
import org.springframework.format.annotation.DateTimeFormat;
@Projection(name = "inlineUsers", types = { Meeting.class })
public interface MeetingInlineUsersProjection {
    String getAddress();
    String getDateTime();    
    String getMessage();
    User getOwner();
    User getInvitee();
}

和我的会议类:

package io.cocept.model;
import javax.persistence.*;
import javax.validation.constraints.NotNull;
import java.util.Date;
@Entity
public class Meeting extends BaseEntity {
    private User owner;
    private User invitee;
    private String address;
    private Date dateTime;
    private String message;
    public Meeting() {
    }

    @ManyToOne
    @NotNull
    @JoinColumn(name = "owner_id")
    public User getOwner() {
        return owner;
    }
    public void setOwner(User owner) {
        this.owner = owner;
    }
    @ManyToOne
    @NotNull
    @JoinColumn(name = "invitee_id")
    public User getInvitee(){
        return invitee;
    }
    public void setInvitee(User invitee){
        this.invitee = invitee;
    }
    @NotNull
    public String getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address;
    }
    @NotNull
    public Date getDateTime() {
        return dateTime;
    }
    public void setDateTime(Date dateTime) {
        this.dateTime = dateTime;
    }
    public String getMessage(){ return message; }
    public void setMessage(String message){ this.message = message; }
}

我尝试将装饰器@DateTimeFormat(pattern = "YYYY")添加到 getDateTime(( 属性,但它不会更改输出的日期格式。

有什么想法吗?

谢谢麦克斯

正如Jens Schauder在他们的评论中指出的那样,我不小心将投影中getDateTime((的类型设置为字符串,而不是Date。这大概是以与 spring 默认值 (iso8601( 不同的格式进行隐式 toString 转换。

当我将投影从:

String getDateTime()

自:

Date getDateTime()

它将日期格式化为ISO8601就像应用程序的其余部分一样。

尝试@DateTimeFormat(pattern = "yyyy")而不是YYYY

最新更新