可以' _id'用Java UUID映射?

时间:2016-05-20 16:05:28

标签: java mongodb scala playframework reactivemongo

最初我想在我的模型中映射MongoDB的_id。例如:

case class User(_id: Option[BSONObjectID], ...)

然而,这导致了很多问题,因为我在插入用户文档后必须设置_id。因此,我使用Java的UUID类替换了此属性。这意味着我的模型中只有id,数据库中只有_idid。我现在开始在我的所有模型中使用它,因为我认为在我的模型中存储与数据库相关的信息是一种不好的做法(如果我切换到SQL数据库会怎么样?)。我可以将UUID作为_id的有效替代品用于我的所有文件吗?

1 个答案:

答案 0 :(得分:-1)

从设计的角度讨论:即使你有一天移动到(MS / My)SQL,你也会有diff --git a/contrib/src/lua/rules.mak b/contrib/src/lua/rules.mak index 037d680..53eb59e 100644 --- a/contrib/src/lua/rules.mak +++ b/contrib/src/lua/rules.mak @@ -85,7 +85,9 @@ ifdef HAVE_WIN32 cd $< && $(RANLIB) "$(PREFIX)/lib/liblua.a" endif ifdef HAVE_CROSS_COMPILE + cd $</src && mv Makefile Makefile.new && mv Makefile.orig Makefile cd $</src && $(MAKE) clean && $(MAKE) liblua.a && ranlib liblua.a && $(MAKE) luac cp $</src/luac $(PREFIX)/bin + cd $</src && mv Makefile Makefile.orig && mv Makefile.new Makefile endif touch $@ diff --git a/contrib/src/vncclient/rules.mak b/contrib/src/vncclient/rules.mak index 1915f5c..a4e23b3 100644 --- a/contrib/src/vncclient/rules.mak +++ b/contrib/src/vncclient/rules.mak @@ -31,7 +31,7 @@ DEPS_vncclient = gcrypt $(DEPS_gcrypt) jpeg $(DEPS_jpeg) png $(DEPS_png) gnutls .vncclient: vncclient $(RECONF) - cd $< && $(HOSTVARS) ./configure $(HOSTCONF) --without-libva + cd $< && $(HOSTVARS) ac_cv_path_AR="$(AR)" ./configure $(HOSTCONF) --without-libva cd $< && $(MAKE) -C libvncclient install cd $< && $(MAKE) install-data touch $@ diff --git a/share/Makefile.am b/share/Makefile.am index 3ed638a..de5188c 100644 --- a/share/Makefile.am +++ b/share/Makefile.am @@ -4,8 +4,10 @@ EXTRA_DIST = appdatadir = $(datadir)/applications if !HAVE_WIN32 +if !HAVE_ANDROID appdata_DATA = vlc.desktop endif +endif EXTRA_DIST += vlc.desktop.in vlc.desktop.mimetypes CLEANFILES += $(appdata_DATA) 类似于你的表的密钥,这与mongodb的primary key autoincrement相同采集。那么_id真的是一个与数据库相关的信息吗?