【发布时间】:2018-11-20 05:11:54
【问题描述】:
我在Spring Boot + Spring Data Redis 中实现@Reference 时遇到问题。 Address 是Employee 中的一个列表,当我保存office 和home 地址时,我希望数据与Employee 一起保存。但是数据没有被保存,因此无法使用street 搜索Address。
Employee.java
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
@RedisHash("employees")
public class Employee {
@Id @Indexed
private String id;
private String firstName;
private String lastName;
@Reference
private List<Address> addresses;
}
地址.java
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
@RedisHash("address")
public class Address {
@Id
private String id;
@Indexed
private String street;
private String city;
}
测试类
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest
public class EmployeeAdressTest extends RepositoryTestSupport{
@Autowired private EmployeeRepository employeeRepository;
@Before
public void setUp() throws JsonProcessingException {
Address home = Address.builder().street("ABC Street").city("Pune").build();
Address offc = Address.builder().street("XYZ Street").city("Pune").build();
Employee employee1 = Employee.builder().firstName("Raj").lastName("Kumar").addresses(Arrays.asList(home, offc)).build();
employeeRepository.save(employee1);
List<Employee> employees = employeeRepository.findByAddresses_Street("XYZ Street");
System.out.println("EMPLOYEE = "+employees);
}
@Test
public void test() {
}
}
春季文档:
8.8. Persisting References
Marking properties with @Reference allows storing a simple key reference instead of copying values into the hash itself. On loading from Redis, references are resolved automatically and mapped back into the object, as shown in the following example:
Example 30. Sample Property Reference
_class = org.example.Person
id = e2c7dcee-b8cd-4424-883e-736ce564363e
firstname = rand
lastname = al’thor
mother = people:a9d4b3a0-50d3-4538-a2fc-f7fc2581ee56
Reference stores the whole key (keyspace:id) of the referenced object.
?
【问题讨论】:
标签: spring redis jedis spring-data-redis