Ánh xạ enum mùa xuân mongodb
Tôi muốn mã không ném ngoại lệ khi mã java tải giá trị enum từ mongo không tồn tại trong mã enum Ví dụ
Bởi vì ĐIỆN THOẠI không tồn tại trong Order Option Enum Tôi chỉ muốn mã trả về giá trị null Bất kỳ ý tưởng ? Trân trọng Giải pháp tốt nhấtbạn có thể thêm triển khai trình chuyển đổi tùy chỉnh một cái gì đó như thế này
Lưu ý. Trình chuyển đổi này sẽ cố gắng chuyển đổi từng chuỗi trong mongo thành enum của bạn, do đó có thể dẫn đến các chuyển đổi không mong muốn, vì vậy hãy đảm bảo bạn chỉ thực hiện việc này khi cần. bạn có thể thêm Giải pháp liên quanEclipse – Cách giải quyết “Thực thi plugin không nằm trong cấu hình vòng đời” cho Bản dựng Maven dữ liệu mùa xuânIn my case of a similar problem, instead of using Andrew's suggestion for the fix, it worked simply after I introduced
Khi cấu trúc này được đặt đúng chỗ, lỗi sẽ biến mất Java – Đâu là sự khác biệt giữa các chú thích @Component, @Repository & @Service trong SpringTừ tài liệu mùa xuân
Chú thích Ý nghĩa Cách tạo và xác thực Lược đồ JSON trong Bộ sưu tập MongoDB MongoDB đã rất khôn ngoan khi áp dụng tiêu chuẩn Lược đồ JSON để xác thực các thay đổi trong dữ liệu. Đó là một tiêu chuẩn cho phép kiểm tra dữ liệu tài liệu bằng nhiều công cụ khác nhau trước khi nó được nhập vào cơ sở dữ liệu Từ khóa “enum” được sử dụng để khai báo một kiểu liệt kê. Đây là cú pháp của enum trong ngôn ngữ C, enum enum_name{const1, const2,. }; . Có 2 cách định nghĩa các biến kiểu enum như sau Dữ liệu mùa xuân Mongodb có thể tuần tự hóa enum thành chuỗi bằng cách sử dụng tên của enum làm giá trị. Giả sử, nó sử dụng cách tiếp cận thứ hai từ bài viết http. //www. cây nho. com/2010/01/3-way-to-serialize-java-enums/ dữ liệu mùa xuân-mongodb. cách tìm tài liệu bằng cách chuyển thuộc tính ngẫu nhiên và giá trị của nó liệt kê. Mỗi enum có trang riêng với các phần sau. khai báo Enum; . Mỗi gói tài liệu, lớp và giao diện có trang Sử dụng riêng. Trang này mô tả những gói, lớp, phương thức, hàm tạo và trường nào sử dụng bất kỳ phần nào của lớp hoặc gói đã cho Spring Data Demo Trong bản demo này, chúng tôi giải thích cách sử dụng cơ bản của Spring Data ArangoDB với tất cả các tính năng chính của nó. Tập dữ liệu trong bản demo này bao gồm các nhân vật và địa điểm của Game of Thrones từ phần đầu tiên Rất gọn gàng, nhưng không hiệu quả với tôi (mongoose 3. 6. 20). đối với hàm path(), các trường enum của tôi phải có tiền tố là ". enum" và không có thuộc tính "enumValues" trên đối tượng được trả về trong khi enum thường có nghĩa là giá trị không bao giờ được xác định hoặc giá trị là một trong những giá trị được phép. Vì vậy, về cơ bản, enum kiểm tra giá trị dựa trên một tập hợp các giá trị, phải không? GPIO. set_button_handler(pin, pull, intmode, period, handler) Cài đặt trình xử lý nút GPIO. pull là kiểu kéo, intmode là chế độ ngắt, period là khoảng thời gian gỡ lỗi tính bằng mili giây, trình xử lý là hàm nhận số pin Phần còn lại của hướng dẫn này chỉ ra cách xác định và truy cập lược đồ và mô hình Mongoose cho ví dụ về trang web LocalLibrary. Thiết kế các mô hình LocalLibrary. Trước khi bạn tham gia và bắt đầu mã hóa các mô hình, bạn nên dành vài phút để suy nghĩ về dữ liệu nào chúng ta cần lưu trữ và mối quan hệ giữa các đối tượng khác nhau Mongoose cũng hỗ trợ xác thực cho các hoạt động update(), updateOne(), updateMany() và findOneAndUpdate(). Trình xác thực cập nhật bị tắt theo mặc định - bạn cần chỉ định tùy chọn runValidators. Để bật trình xác nhận cập nhật, hãy đặt tùy chọn runValidators cho update() , updateOne() , updateMany() hoặc findOneAndUpdate() Mongoose hỗ trợ các mảng SchemaTypes và mảng các tài liệu con. Mảng của SchemaTypes còn được gọi là mảng nguyên thủy và mảng của tài liệu con còn được gọi là mảng tài liệu Việc liệt kê cung cấp sự hiểu biết rõ ràng về tập hợp các giá trị có thể được sử dụng cho một thuộc tính. Điều này đảm bảo chúng ta có thể hạn chế đầu vào cho tập hợp các giá trị trong kiểu liệt kê. Việc liệt kê cũng báo hiệu cho người đọc hành vi dự định của các phiên bản mô hình (đặc biệt nếu trường liệt kê được sử dụng trong máy trạng thái) Truyền chạy trước khi xác thực và xác thực không chạy nếu truyền không thành công. Điều đó có nghĩa là trình xác thực tùy chỉnh của bạn có thể cho rằng v là null , undefined hoặc một phiên bản thuộc loại được chỉ định trong lược đồ của bạn Nhà tài trợ Automattic/mongoose Watch 556 Fork 2 Tạo mảng enums #661. true không hoạt động trong mảng #1277 Các phương thức Ngày tích hợp không được nối vào logic theo dõi thay đổi của cầy mangut, điều này trong tiếng Anh có nghĩa là nếu bạn sử dụng một Ngày trong tài liệu của mình và sửa đổi nó bằng một phương thức như setMonth(), thì cầy mangut sẽ không biết về sự thay đổi này và tài liệu. save() sẽ không duy trì sửa đổi này Để hỗ trợ sharding dựa trên hàm băm, MongoDB cung cấp loại chỉ mục được băm, loại chỉ mục này lập chỉ mục cho hàm băm của giá trị của một trường. Các chỉ mục này có phân phối giá trị ngẫu nhiên hơn dọc theo phạm vi của chúng, nhưng chỉ hỗ trợ đối sánh bằng và không thể hỗ trợ các truy vấn dựa trên phạm vi Bài đăng này là một phần của loạt bài có tên Giới thiệu về Mongoose cho MongoDB và Node. js. Nhập hàng loạt tệp CSV vào MongoDB bằng Mongoose với nút. js Mongoose là một khung JavaScript thường được sử dụng trong Nút. js với cơ sở dữ liệu MongoDB MongoDB cung cấp khả năng thực hiện xác thực lược đồ trong quá trình cập nhật và chèn Điều này có thể lưu thành công hay không, tùy thuộc vào việc // MongoDB có xây dựng chỉ mục trước khi viết 2 tài liệu hay không. }); . Bạn chỉ cần xây dựng các chỉ mục một lần cho // một bộ sưu tập nhất định, vì vậy thông thường bạn không cần phải làm điều này // trong sản xuất Một enum đại diện cho loại hoạt động cho sự kiện thay đổi này. chèn. Chỉ định một thao tác kiểu chèn MongoDB hỗ trợ bản nháp 4 của Lược đồ JSON, bao gồm đặc tả cốt lõi và đặc tả xác thực, với một số khác biệt. Xem Tiện ích mở rộng và Thiếu sót để biết chi tiết. Để biết thêm thông tin về Lược đồ JSON, hãy xem trang web chính thức Tuy nhiên, nếu enum là thiết bị thích hợp trong C# -- và bạn chắc chắn rằng mã C# sẽ thúc đẩy bất kỳ thay đổi nào, chứ không phải cơ sở dữ liệu -- phương pháp ưu tiên của tôi là lưu trữ loại giá trị cơ bản trong cơ sở dữ liệu (bigint, int, Bằng cách giữ enum trong cơ sở dữ liệu của bạn và thêm khóa ngoại trên bảng có chứa giá trị enum, bạn đảm bảo rằng không có mã nào nhập sai giá trị cho cột đó. Điều này giúp toàn vẹn dữ liệu của bạn và là lý do rõ ràng nhất IMO bạn nên có các bảng cho enums Tuy nhiên, có nhiều cách tiếp cận tương tự như lưu trữ chuỗi trong cơ sở dữ liệu (đặc biệt là MySQL) hiệu quả. Đầu tiên, MySQL có một kiểu enum có thể trông rất giống một chuỗi Boolean hoặc bị hạn chế khi thiết lập theo cách đó. Nó cũng bắt buộc chỉ nhập các giá trị hợp lệ Hệ thống con ánh xạ Spring Data MongoDB lấy một lớp miền như thế này và chuyển đổi nó thành một MongoDB DBObject. Theo mặc định, trường có tên 'id' hoặc '_id' sẽ được sử dụng làm trường ID của tài liệu Cơ sở hạ tầng siêu dữ liệu ánh xạ được xác định trong một dự án chung dữ liệu mùa xuân riêng biệt là công nghệ bất khả tri. Các lớp con cụ thể đang sử dụng trong hỗ trợ MongoDB để hỗ trợ siêu dữ liệu dựa trên chú thích. Các chiến lược khác cũng có thể được đưa ra nếu có nhu cầu. Đây là một ví dụ về ánh xạ phức tạp hơn Ánh xạ Enums được thực hiện ngay với @Convert trong JPA 2. 1 (Kiểu liệt kê. ORDINAL) (mặc định) sẽ ánh xạ các giá trị enum bằng Enum. thứ tự(). ứng dụng web mẫu Spring có sẵn trên GitHub Hỗ trợ cấu hình mùa xuân bằng cách sử dụng các lớp @Configuration dựa trên Java hoặc một không gian tên XML cho một phiên bản trình điều khiển Mongo và các bộ bản sao. Lớp trình trợ giúp MongoTemplate giúp tăng năng suất khi thực hiện các thao tác Mongo phổ biến. Bao gồm ánh xạ đối tượng tích hợp giữa các tài liệu và POJO Triển khai MongoPersistentEntity cụ thể của MongoDB bổ sung siêu dữ liệu cụ thể của Mongo, chẳng hạn như tên bộ sưu tập và những thứ tương tự. BasicMongoPersistentProperty Triển khai PersistentProperty cụ thể của MongoDB Enum đi kèm với hình phạt là cần phải thay đổi lược đồ để thêm hoặc xóa các loại. Điều này đưa chúng ta đến một bảng con và các khóa ngoại (áp dụng cho tất cả các cơ sở dữ liệu). Có, bạn đang lưu trữ một số giá trị dưới dạng khóa (quay lại 1, 2 hoặc 3) và giá trị đã xuất bản, đã đóng và kế thừa được lưu trữ trong một bảng khác Enums không dễ bảo trì và khóa cơ sở dữ liệu thành phiên bản của thế giới khi cơ sở dữ liệu được thiết kế. Khi sử dụng chuỗi văn bản để so sánh trong mã, có thể viết sai chính tả và ngôn ngữ sẽ không cảnh báo bạn. Enums thường được sắp xếp theo thứ tự mà chúng được tạo ra một phép liệt kê. Một đối tượng chuỗi chỉ có thể có một giá trị, được chọn từ danh sách các giá trị 'value1', 'value2', , NULL hoặc giá trị lỗi '' đặc biệt. Về lý thuyết, một cột ENUM có thể có tối đa 65.535 giá trị riêng biệt; Mặc dù sử dụng enums là kiểu an toàn, nhưng nhu cầu chuyển đổi enum thành chuỗi và ngược lại là khá thường xuyên. Và không có tính năng tích hợp sẵn nào để làm điều đó trong Java. Và cuối cùng bạn sẽ sử dụng valueOf() và toString(). Và sử dụng phương pháp đó sẽ không khác nhiều so với việc chỉ sử dụng các chuỗi Mọi người tạo bảng enum trong SQL vì họ thấy bảng sau dễ đọc hơn - dẫn đến ít lỗi hơn khi viết và duy trì SQL. Bạn có thể biến giới tính thành một chuỗi trực tiếp trong Person, nhưng sau đó bạn sẽ phải thử và thực thi trường hợp. Bạn cũng có thể tăng lần truy cập lưu trữ cho bảng và thời gian truy vấn do sự khác biệt giữa chuỗi và số nguyên tùy thuộc vào mức độ tuyệt vời của DB trong việc tối ưu hóa mọi thứ Ví dụ: để lưu enum dưới dạng chuỗi trong cơ sở dữ liệu, kiểu mô hình là kiểu enum và kiểu nhà cung cấp là Chuỗi. Hai loại này có thể giống nhau. Hai loại này có thể giống nhau. Các chuyển đổi được xác định bằng hai cây biểu thức Func. một từ ModelClrType đến ProviderClrType và một từ ProviderClrType đến ModelClrType - Bài đăng này minh họa một cách dễ dàng và hiệu quả để đặt "giá trị enum này so với. chuỗi cơ sở dữ liệu" đang được kiểm tra, sử dụng xUnit. net và một chút NHibernate trên đường đi. Hãy xem một ví dụ từ cơ sở dữ liệu mẫu AdventureWorks của Microsoft (cụ thể là phiên bản LT) |