spring数据mongodb _id映射偏好(spring data mongodb _id mapping preference)
我在我的Java应用程序中使用弹簧数据mongodb框架来将我的应用程序数据保存在mongodb中。 在我的java模型类中,我有两个字段。
1)一个带有@Id标注的字段。 2)字段ID
关于映射到保存的mongodb文档中的_id键,哪一个会得到首选项,否则我会得到多重映射的错误。 我正在使用弹簧数据mongo 1.6.1。 我知道我可以测试这个,但我没有本地环境设置。
I am using spring data mongodb framework in my java application to persist my application data in mongodb. In my java model class I have two fields.
1) A field objId with @Id annotation on it. 2) A field id
with respect to mapping to _id key in the mongodb document saved, which one will get preference or will I get an error for multiple mapping. I am using spring data mongo 1.6.1. I know I could have tested this out but I do not have local environment setup.
原文:https://stackoverflow.com/questions/27387335
最满意答案
请参考这个JS小提琴
这个小提琴已经解决了关闭infowindow的所有问题,这是必需的。
JS代码:
var tm; $(function () { //MAP STYLES var styledMapType = new google.maps.StyledMapType([{ featureType: "water", elementType: "all", stylers: [{ saturation: 0 }, { lightness: 100 }] }, { featureType: "all", elementType: "all", stylers: [{ saturation: -100 }] }], { name: "white" }); tm = TimeMap.init({ mapId: "map", // Id of map div element (required) timelineId: "timeline", // Id of timeline div element (required) width: 100, options: { eventIconPath: "", theme: "red" }, bandInfo: [{ width: "75%", intervalUnit: Timeline.DateTime.DAY, intervalPixels: 215 }, { width: "25%", intervalUnit: Timeline.DateTime.MONTH, intervalPixels: 125, showEventText: false, trackHeight: 0.2, trackGap: 0.2 }], datasets: [{ title: "Events", id: "events", theme: "purple", type: "gss", options: { // note that your spreadsheet must be published for this to work // key: "pjUcDAp-oNIOjmx3LCxT4XA", url: "https://spreadsheets.google.com/feeds/list/1elu4weQh25aK01wB5pliKMeST5hiuyxHvKtcSFjBmRc/1/public/values?alt=json-in-script", // map spreadsheet column names to expected ids paramMap: { start: "date" }, extraColumns: ["Title", "Date", "Date infowindow", "Photo", "Photo bijschrift", "Credit", "Url credit", "Url", "Url tekst"], infoTemplate: "<div style='overflow:hidden;line-height:1.35;min-width:200px;'><div id='oorlog-info'><table><tr><td valign='top'><div class='foto'>" + "<img src='{{Photo}}' /> <div class='bijschrift'>" + "<p>{{Photo bijschrift}}<br><a href='{{Url credit}}'>{{Credit}}</a></p></div> </div></td><td valign='top'><div class='data'>" + "<span>{{Date infowindow}}</span><h3>{{Title}}</h3>" + "<p>{{description}}<br /><a href='{{Url}}'>{{Url tekst}}</a></p></div></div><br style='clear: both'" } }], bandIntervals: [ Timeline.DateTime.WEEK, Timeline.DateTime.MONTH] }); var gmap = tm.getNativeMap(); gmap.mapTypes.set("white", styledMapType); gmap.setMapTypeId("white"); });
CSS代码:
#timemap { height: 1000px; } div#timelinecontainer { width: 960px; height: 250px; } div#timeline { width: 960px; height: 100%; font-size: 11px; background: #CCCCCC; } div#mapcontainer { width: 960px; height: 750px; } div#map { width: 100%; height: 100%; background: #EEEEEE; } div.infodescription { font-style: normal; width: 300px; } #oorlog-info { position: relative; height: auto } #oorlog-info .foto { width: 340px; position: relative; float: left; } #oorlog-info .foto > img { width: 340px; } #oorlog-info .foto .bijschrift { background: rgba(0, 0, 0, 0.85); position: absolute; margin:0 auto; bottom: 3px; width: 340px; margin: 0 0px 0px; } #oorlog-info .foto .bijschrift > p { color: #fff; font-size: 9px; line-height: 12px; padding: 5px 7px 4px; text-transform: uppercase; } #oorlog-info .foto .bijschrift > p > a { color: #c4c4c4; font-size: 9px; font-style: italic; } #oorlog-info .foto .bijschrift > p > a:hover { text-decoration: underline; } #oorlog-info .data > span { background: #111; padding: 5px 8px; color: #fff; display: inline-block; font-size: 11px; font-weight: bold; margin: 0 0 0 10px; float: left; } #oorlog-info .data > h3 { padding: 0; display: inline-block; font-size: 16px; font-weight: bold; margin: 6px 0 0 8px; } #oorlog-info .data > p { padding: 10px; font-size: 11px; margin: 0; width: 295px; line-height: 14px; } #oorlog-info .data > p > a { padding: 10px 0 0; display: block; text-transform: uppercase; } #oorlog-info .data > p > a { background-color:#444; font-family:'Open Sans', sans-serif; font-size:9px; text-decoration:none; color:#fff; margin: 12px 0 0; position:relative; padding:6px 0px 4px 8px; linear, left bottom, left top, color-stop(0, rgb(44, 160, 202)), color-stop(1, rgb(62, 184, 229))); -webkit-border-radius: 5px; -moz-border-radius: 5px; -o-border-radius: 5px; border-radius: 5px; -webkit-box-shadow: inset 0px 1px 0px #333, 0px 3px 0px 0px #000; -moz-box-shadow: inset 0px 1px 0px #333, 0px 3px 0px 0px #000; -o-box-shadow: inset 0px 1px 0px #333, 0px 3px 0px 0px #000; box-shadow: inset 0px 1px 0px #333, 0px 3px 0px 0px #000; width: 150px; } #oorlog-info .data > p > a:active { top:3px; background: #333; linear, left bottom, left top, color-stop(0, rgb(62, 184, 229)), color-stop(1, rgb(44, 160, 202))); -webkit-box-shadow: inset 0px 1px 0px #222, 0px 2px 0px 0px #111, 0px 5px 3px #999; -moz-box-shadow: inset 0px 1px 0px #222, 0px 2px 0px 0px #111, 0px 5px 3px #999; -o-box-shadow: inset 0px 1px 0px #222, 0px 2px 0px 0px #111, 0px 5px 3px #999; box-shadow: inset 0px 1px 0px #222, 0px 2px 0px 0px #111, 0px 5px 3px #999; } #oorlog-info .data > p > a::before { background-color:#222; background-image:url(http://www.nieuwsblad.be/extra/static/201407_1418/images/right_arrow.png); background-repeat:no-repeat; background-position:center center; content:""; width:16px; height:16px; position:absolute; right:9px; top:50%; margin-top:-7px; -webkit-border-radius: 50%; -moz-border-radius: 50%; -o-border-radius: 50%; border-radius: 50%; -webkit-box-shadow: inset 0px 1px 0px #000, 0px 1px 0px #666; -moz-box-shadow: inset 0px 1px 0px #000, 0px 1px 0px #666; -o-box-shadow: inset 0px 1px 0px #000, 0px 1px 0px #666; box-shadow: inset 0px 1px 0px #000, 0px 1px 0px #666; } #oorlog-info .data > p > a:active::before { top:50%; margin-top:-12px; -webkit-box-shadow: inset 0px 1px 0px #666, 0px 2px 0px #444, 0px 4px 3px #111; -moz-box-shadow: inset 0px 1px 0px #666, 0px 2px 0px #444, 0px 4px 3px #111; -o-box-shadow: inset 0px 1px 0px #666, 0px 2px 0px #444, 0px 4px 3px #111; box-shadow: inset 0px 1px 0px #666, 0px 2px 0px #444, 0px 4px 3px #111; }
HTML代码:
<div id="timemap"> <div id="timelinecontainer"> <div id="timeline"></div> </div> <div id="mapcontainer"> <div id="map"></div> </div> </div>
外部文件添加在小提琴中:
1. http://timemap.googlecode.com/svn/tags/2.0.1/examples/examples.css 2. http://maps.google.com/maps?file=api&v=2&key=ABQIAAAASI0kCI-azC8RgbOZzWc3VRRarOQe_TKf_51Omf6UUSOFm7EABRRhO0PO4nBAO9FCmVDuowVwROLo3w 3. http://timemap.googlecode.com/svn/tags/2.0.1/lib/jquery-1.6.2.min.js 4. http://timemap.googlecode.com/svn/tags/2.0.1/lib/mxn/mxn.js?(google) 5. http://timemap.googlecode.com/svn/tags/2.0.1/lib/timeline-1.2.js 6. http://timemap.googlecode.com/svn/tags/2.0.1/src/timemap.js 7. http://timemap.googlecode.com/svn/tags/2.0.1/src/param.js 8. http://timemap.googlecode.com/svn/tags/2.0.1/src/loaders/json.js 9. http://timemap.googlecode.com/svn/tags/2.0.1/src/loaders/google_spreadsheet.js
如果您有任何其他问题或疑问,请添加您的评论,我可以帮助您解决问题。
问候D.
Please refer to this JS Fiddle
This fiddle is having all the issues solved of closing the infowindow, that was required.
JS Code:
var tm; $(function () { //MAP STYLES var styledMapType = new google.maps.StyledMapType([{ featureType: "water", elementType: "all", stylers: [{ saturation: 0 }, { lightness: 100 }] }, { featureType: "all", elementType: "all", stylers: [{ saturation: -100 }] }], { name: "white" }); tm = TimeMap.init({ mapId: "map", // Id of map div element (required) timelineId: "timeline", // Id of timeline div element (required) width: 100, options: { eventIconPath: "", theme: "red" }, bandInfo: [{ width: "75%", intervalUnit: Timeline.DateTime.DAY, intervalPixels: 215 }, { width: "25%", intervalUnit: Timeline.DateTime.MONTH, intervalPixels: 125, showEventText: false, trackHeight: 0.2, trackGap: 0.2 }], datasets: [{ title: "Events", id: "events", theme: "purple", type: "gss", options: { // note that your spreadsheet must be published for this to work // key: "pjUcDAp-oNIOjmx3LCxT4XA", url: "https://spreadsheets.google.com/feeds/list/1elu4weQh25aK01wB5pliKMeST5hiuyxHvKtcSFjBmRc/1/public/values?alt=json-in-script", // map spreadsheet column names to expected ids paramMap: { start: "date" }, extraColumns: ["Title", "Date", "Date infowindow", "Photo", "Photo bijschrift", "Credit", "Url credit", "Url", "Url tekst"], infoTemplate: "<div style='overflow:hidden;line-height:1.35;min-width:200px;'><div id='oorlog-info'><table><tr><td valign='top'><div class='foto'>" + "<img src='{{Photo}}' /> <div class='bijschrift'>" + "<p>{{Photo bijschrift}}<br><a href='{{Url credit}}'>{{Credit}}</a></p></div> </div></td><td valign='top'><div class='data'>" + "<span>{{Date infowindow}}</span><h3>{{Title}}</h3>" + "<p>{{description}}<br /><a href='{{Url}}'>{{Url tekst}}</a></p></div></div><br style='clear: both'" } }], bandIntervals: [ Timeline.DateTime.WEEK, Timeline.DateTime.MONTH] }); var gmap = tm.getNativeMap(); gmap.mapTypes.set("white", styledMapType); gmap.setMapTypeId("white"); });
CSS Code:
#timemap { height: 1000px; } div#timelinecontainer { width: 960px; height: 250px; } div#timeline { width: 960px; height: 100%; font-size: 11px; background: #CCCCCC; } div#mapcontainer { width: 960px; height: 750px; } div#map { width: 100%; height: 100%; background: #EEEEEE; } div.infodescription { font-style: normal; width: 300px; } #oorlog-info { position: relative; height: auto } #oorlog-info .foto { width: 340px; position: relative; float: left; } #oorlog-info .foto > img { width: 340px; } #oorlog-info .foto .bijschrift { background: rgba(0, 0, 0, 0.85); position: absolute; margin:0 auto; bottom: 3px; width: 340px; margin: 0 0px 0px; } #oorlog-info .foto .bijschrift > p { color: #fff; font-size: 9px; line-height: 12px; padding: 5px 7px 4px; text-transform: uppercase; } #oorlog-info .foto .bijschrift > p > a { color: #c4c4c4; font-size: 9px; font-style: italic; } #oorlog-info .foto .bijschrift > p > a:hover { text-decoration: underline; } #oorlog-info .data > span { background: #111; padding: 5px 8px; color: #fff; display: inline-block; font-size: 11px; font-weight: bold; margin: 0 0 0 10px; float: left; } #oorlog-info .data > h3 { padding: 0; display: inline-block; font-size: 16px; font-weight: bold; margin: 6px 0 0 8px; } #oorlog-info .data > p { padding: 10px; font-size: 11px; margin: 0; width: 295px; line-height: 14px; } #oorlog-info .data > p > a { padding: 10px 0 0; display: block; text-transform: uppercase; } #oorlog-info .data > p > a { background-color:#444; font-family:'Open Sans', sans-serif; font-size:9px; text-decoration:none; color:#fff; margin: 12px 0 0; position:relative; padding:6px 0px 4px 8px; linear, left bottom, left top, color-stop(0, rgb(44, 160, 202)), color-stop(1, rgb(62, 184, 229))); -webkit-border-radius: 5px; -moz-border-radius: 5px; -o-border-radius: 5px; border-radius: 5px; -webkit-box-shadow: inset 0px 1px 0px #333, 0px 3px 0px 0px #000; -moz-box-shadow: inset 0px 1px 0px #333, 0px 3px 0px 0px #000; -o-box-shadow: inset 0px 1px 0px #333, 0px 3px 0px 0px #000; box-shadow: inset 0px 1px 0px #333, 0px 3px 0px 0px #000; width: 150px; } #oorlog-info .data > p > a:active { top:3px; background: #333; linear, left bottom, left top, color-stop(0, rgb(62, 184, 229)), color-stop(1, rgb(44, 160, 202))); -webkit-box-shadow: inset 0px 1px 0px #222, 0px 2px 0px 0px #111, 0px 5px 3px #999; -moz-box-shadow: inset 0px 1px 0px #222, 0px 2px 0px 0px #111, 0px 5px 3px #999; -o-box-shadow: inset 0px 1px 0px #222, 0px 2px 0px 0px #111, 0px 5px 3px #999; box-shadow: inset 0px 1px 0px #222, 0px 2px 0px 0px #111, 0px 5px 3px #999; } #oorlog-info .data > p > a::before { background-color:#222; background-image:url(http://www.nieuwsblad.be/extra/static/201407_1418/images/right_arrow.png); background-repeat:no-repeat; background-position:center center; content:""; width:16px; height:16px; position:absolute; right:9px; top:50%; margin-top:-7px; -webkit-border-radius: 50%; -moz-border-radius: 50%; -o-border-radius: 50%; border-radius: 50%; -webkit-box-shadow: inset 0px 1px 0px #000, 0px 1px 0px #666; -moz-box-shadow: inset 0px 1px 0px #000, 0px 1px 0px #666; -o-box-shadow: inset 0px 1px 0px #000, 0px 1px 0px #666; box-shadow: inset 0px 1px 0px #000, 0px 1px 0px #666; } #oorlog-info .data > p > a:active::before { top:50%; margin-top:-12px; -webkit-box-shadow: inset 0px 1px 0px #666, 0px 2px 0px #444, 0px 4px 3px #111; -moz-box-shadow: inset 0px 1px 0px #666, 0px 2px 0px #444, 0px 4px 3px #111; -o-box-shadow: inset 0px 1px 0px #666, 0px 2px 0px #444, 0px 4px 3px #111; box-shadow: inset 0px 1px 0px #666, 0px 2px 0px #444, 0px 4px 3px #111; }
HTML Code:
<div id="timemap"> <div id="timelinecontainer"> <div id="timeline"></div> </div> <div id="mapcontainer"> <div id="map"></div> </div> </div>
External Files added in the fiddle:
1. http://timemap.googlecode.com/svn/tags/2.0.1/examples/examples.css 2. http://maps.google.com/maps?file=api&v=2&key=ABQIAAAASI0kCI-azC8RgbOZzWc3VRRarOQe_TKf_51Omf6UUSOFm7EABRRhO0PO4nBAO9FCmVDuowVwROLo3w 3. http://timemap.googlecode.com/svn/tags/2.0.1/lib/jquery-1.6.2.min.js 4. http://timemap.googlecode.com/svn/tags/2.0.1/lib/mxn/mxn.js?(google) 5. http://timemap.googlecode.com/svn/tags/2.0.1/lib/timeline-1.2.js 6. http://timemap.googlecode.com/svn/tags/2.0.1/src/timemap.js 7. http://timemap.googlecode.com/svn/tags/2.0.1/src/param.js 8. http://timemap.googlecode.com/svn/tags/2.0.1/src/loaders/json.js 9. http://timemap.googlecode.com/svn/tags/2.0.1/src/loaders/google_spreadsheet.js
If you have any other concern or query, please add your comment, and I can help you out to solve it.
Regards D.
相关问答
更多-
InfoWindows有一个close()函数。 只需跟踪最后打开的窗口,并在创建新窗口时调用其关闭功能。 此演示具有您要查找的功能。 我在Maps API V3演示库中找到它。 There is a close() function for InfoWindows. Just keep track of the last opened window, and call the close function on it when a new window is created. This demo has ...
-
使用电子表格数据的Google时间图:infowindows不会关闭(Google timemap using spreadsheet data: infowindows do not close)[2022-12-13]
请参考这个JS小提琴 这个小提琴已经解决了关闭infowindow的所有问题,这是必需的。 JS代码: var tm; $(function () { //MAP STYLES var styledMapType = new google.maps.StyledMapType([{ featureType: "water", elementType: "all", stylers: [{ saturation: 0 ... -
使用Ui服务的submitButton在Google电子表格中写入数据(Write Data in Google Spreadsheet using submitButton from Ui Service)[2022-10-01]
如果您在GUI中使用FormPanel和Submit按钮,则可以使用名为doPost(e)的预定义函数,其中e var将包含所有FormPanel值。 对于每个输入字段,还在GUI Builder中设置Name参数,以便您可以按名称引用它们。 这是代码: function doPost(e) { var ss = SpreadsheetApp.getActiveSpreadsheet(); var txt1 = e.parameter.TextBox1Name; var txt2 = e.par ... -
用这个: var marker_image = 'http://labs.google.com/ridefinder/images/mm_20_yellow.png'; 代替 var marker_image = markers[i].getAttribute('markerimage'); 或者在xml中添加markerimage 。 因为你的代码为url提供了错误,因为图像字符串不可用,这就是你没有得到infowindow的原因。 //在这里看演示 $(function () { ...
-
我已经更新了googleway的开发版本,因此您可以指定close_info_window 。 如果设置为TRUE ,当您单击地图时,标记上的任何打开的信息窗口都将关闭。 ## install the development version: devtools::install_github("SymbolixAU/googleway") library(googleway) ## min version: 2.6.1002 tram_stops$info <- "Make me dissappear ...
-
试试这个......替换itemAdd函数 function itemAdd(form) { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getSheetByName("Sheet1"); var lastRow = sheet.getLastRow(); var match1 = sheet.getRange("B2").getValue(); var dataRange = she ...
-
我会尝试使用单元格对象/提要来设置标题行中的值。 http://code.google.com/apis/spreadsheets/data/3.0/developers_guide.html#CellFeeds 如果可行,那么你可以希望使用列表对象/饲料与你刚刚设置的标题名称。 I would try to use the cell objects/feeds to set the values in the header row. http://code.google.com/apis/spreadsh ...
-
我为Temboo工作。 您可以通过用逗号分隔rowData中的每个值,在AppendRow Choreo中设置多个列。 对于您的情况,您希望您的rowData看起来像这样:“19:35:26,4 / 22/2016”。 你可以试试像timeString.replace(" ",","); 。 希望这会有所帮助。 如果您有任何其他问题,请随时通过https://temboo.com/support与我们联系 I work for Temboo. You can set multiple columns in ...
-
您正在多次将标记侦听器添加到标记(每次在引脚数组上调用drop时)。 一种选择是在再次添加之前清除侦听器: for (i in pins.list) google.maps.event.clearListeners(pins.list[i], "click"); google.maps.event.addListener( pins.list[i], "click", function() { pins.content(this, this.title); ...
-
这是一种可行的方法: code.gs function onOpen() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var menuEntries = [{name: "show dialog", functionName: "showDialog"}]; ss.addMenu("script center menu", menuEntries); } function showDialog(){ var uiDia ...