spring-data-mongo 注解 @Id 属性会自动生成 id 吗
时间: 2024-01-05 19:02:40 浏览: 225
spring 属性参考与自动绑定
是的,使用 Spring Data MongoDB 中的 `@Id` 注解标记实体类的属性时,如果该属性名为 `id`,则在向 MongoDB 中插入文档时,会自动生成一个唯一的 Object ID,并将其赋值给 `id` 属性。
例如,下面是一个简单的实体类:
```
@Document(collection = "users")
public class User {
@Id
private String id;
private String name;
private int age;
// getters and setters
}
```
在向 MongoDB 插入 User 对象时,如果该对象的 `id` 属性为 `null`,则会自动生成一个唯一的 Object ID 并将其赋值给 `id` 属性。例如:
```
User user = new User();
user.setName("John");
user.setAge(30);
mongoTemplate.insert(user); // 自动生成一个唯一的 Object ID 并将其赋值给 id 属性
```
需要注意的是,如果实体类的 `@Id` 标记的属性名不是 `id`,则不会自动生成 Object ID,而是将该属性值作为文档的 ID。例如:
```
@Document(collection = "users")
public class User {
@Id
private String userId; // 不是 id 属性
private String name;
private int age;
// getters and setters
}
```
在向 MongoDB 插入 User 对象时,如果该对象的 `userId` 属性为 `null`,则会抛出 `org.springframework.data.mongodb.UncategorizedMongoDbException` 异常。因此,如果你想自动生成 Object ID,建议将实体类的 ID 属性名设置为 `id`。
阅读全文