Spring Data Redis Repository 支持不读回嵌入的复杂对象
Spring Data Redis Repository support does not read back embedded complex objects
我有一个 spring-boot 应用程序(1.4RC1,我知道它是 RC,但 Spring Data Redis 1.7.2 不是)我正在使用 spring-引导启动器-redis。
该应用程序使用 Spring 数据存储库 (CrudRepository
),该存储库应保存具有 String
和 Boolean
属性的对象(使用 @RedisHash
注释)和一个自定义 class 属性,它也只有 Strings
和 Longs
作为属性。
当我保存一个对象(通过存储库)时,一切都很顺利,我可以看到数据库中的所有属性,正如我所期望的那样。
当我想从数据库中读取数据(通过存储库)时,我只从父对象中获取属性。自定义 class 属性 为空。
我希望也能从数据库中加载 属性。正如文档所述,您可以编写一个 custom converter,但由于我不需要这样做,所以当我想写入数据时,我也不需要编写一个读取转换器。
我想知道是否需要注释自定义 class 属性,但我在文档中找不到任何内容。你能给我指出正确的方向吗?
class如下:
Class样本:
@Data
@EqualsAndHashCode(exclude = {"isActive", "sampleCreated", "sampleConfiguration"})
@RedisHash
public class Sample {
@Id
private String sampleIdentifier;
private Boolean isActive;
private Date sampleCreated;
private SampleConfiguration sampleConfiguration;
public Sample(String sampleIdentifier, SampleConfiguration sampleConfiguration){
this.sampleIdentifier = sampleIdentifier;
this.sampleConfiguration = sampleConfiguration;
}
}
Class 示例配置:
@Data
public class SampleConfiguration {
private String surveyURL;
private Long blockingTime;
private String invitationTitle;
private String invitationText;
private String participateButtonText;
private String doNotParticipateButtonText;
private String optOutButtonText;
private Long frequencyCappingThreshold;
private Long optOutBlockingTime;
}
我按照 Christoph Strobl 的建议将 @NoArgsConstructor
添加到我的 Sample
class 中。然后存储库正确读取 SampleConfiguration
。谢谢,克里斯托夫!
我有一个 spring-boot 应用程序(1.4RC1,我知道它是 RC,但 Spring Data Redis 1.7.2 不是)我正在使用 spring-引导启动器-redis。
该应用程序使用 Spring 数据存储库 (CrudRepository
),该存储库应保存具有 String
和 Boolean
属性的对象(使用 @RedisHash
注释)和一个自定义 class 属性,它也只有 Strings
和 Longs
作为属性。
当我保存一个对象(通过存储库)时,一切都很顺利,我可以看到数据库中的所有属性,正如我所期望的那样。 当我想从数据库中读取数据(通过存储库)时,我只从父对象中获取属性。自定义 class 属性 为空。
我希望也能从数据库中加载 属性。正如文档所述,您可以编写一个 custom converter,但由于我不需要这样做,所以当我想写入数据时,我也不需要编写一个读取转换器。
我想知道是否需要注释自定义 class 属性,但我在文档中找不到任何内容。你能给我指出正确的方向吗?
class如下:
Class样本:
@Data
@EqualsAndHashCode(exclude = {"isActive", "sampleCreated", "sampleConfiguration"})
@RedisHash
public class Sample {
@Id
private String sampleIdentifier;
private Boolean isActive;
private Date sampleCreated;
private SampleConfiguration sampleConfiguration;
public Sample(String sampleIdentifier, SampleConfiguration sampleConfiguration){
this.sampleIdentifier = sampleIdentifier;
this.sampleConfiguration = sampleConfiguration;
}
}
Class 示例配置:
@Data
public class SampleConfiguration {
private String surveyURL;
private Long blockingTime;
private String invitationTitle;
private String invitationText;
private String participateButtonText;
private String doNotParticipateButtonText;
private String optOutButtonText;
private Long frequencyCappingThreshold;
private Long optOutBlockingTime;
}
我按照 Christoph Strobl 的建议将 @NoArgsConstructor
添加到我的 Sample
class 中。然后存储库正确读取 SampleConfiguration
。谢谢,克里斯托夫!