一个多态关联类似于外键或多对一的一个关系,区别在于目标可能是多种类型(在语言班,在db表)之一.
我正在移植一个数据库设计,我已经使用了几年,从PHP到Java.在旧的代码中,我已经推出了自己的ORM,由于多种原因这不是最佳的.虽然我可能会在以后开始调整内容,也许最终会自己再次实现,现在我想在我的实体类中使用现成的ORM和JPA.
现在,关于数据库布局有一点我不知道如何在JPA中表达:
我有一个存储图形Node的Edge表格(DAG,如果重要的话).每个节点可以可选地从数据库引用另一个实体.在整个图表中可以多次引用这些entites,并且还可能存在"孤立"的entites,这对于用户来说是不可访问的,但是至少保持一段时间可能是有意义的.
这些对象在继承等方面完全没有关系,但具有自然层次结构,类似于Customer-> Site-> Floor-> Room.事实上,几年前,我开始只使用指向"父"对象的外键字段.但是,这种层次结构不够灵活,并且开始崩溃.
例如,我想允许用户将文件夹中的对象分组,某些对象可以有多个"父母",并且关系也会随着时间而变化.我需要跟踪关系是如何进行的,因此图的edegs具有与它们相关的时间跨度,从何时到何时有效.
从节点到对象的链接存储在节点表的两列中,一个在外表中携带id,一个携带其名称.例如(省略了一些列):
table Node:
+--------+-------+----------+
| ixNode | ixRef | sRefType |
+--------+-------+----------+
| 1 | NULL | NULL | <-- this is what a "folder" would look like
| 2 | 17 | Source |
| 3 | 58 | Series | <-- there's seven types of related objects so far
+--------+-------+----------+
table Source (excerpt):
+----------+--------------------+
| ixSource | sName |
+----------+--------------------+
| 16 | …Run Code Online (Sandbox Code Playgroud) 对于我的SQL查询,我通常对SELECT语句执行以下操作:
SELECT ...
FROM table t
WHERE 1=1
AND t.[column1] = @param1
AND t.[column2] = @param2
Run Code Online (Sandbox Code Playgroud)
如果我需要添加/删除/注释任何WHERE子句,这将使它变得容易,因为我不必关心第一行.
使用此模式时是否有任何性能损失?
附加信息:
绵羊模拟器和所有其他未获得使用的实例.
假设上面的查询,我需要将@param1更改为不包含在查询中:
1 = 1时:
...
WHERE 1=1 <-- no change
--AND t.[column1] = @param1 <-- changed
AND t.[column2] = @param2 <-- no change
...
Run Code Online (Sandbox Code Playgroud)
没有1 = 1:
...
WHERE <-- no change
--t.[column1] = @param1 <-- changed
{AND removed} t.[column2] = @param2 <-- changed
...
Run Code Online (Sandbox Code Playgroud) 我正在尝试理解Java标准集合库中的API不一致性.
List或AbstractList中没有方法可以获取最后一项,尽管可以使用size和getIndex()来模拟它.
但是,LinkedList支持该功能.
知道为什么决定不在界面中支持这种方法吗?
我们正在将旧的Access VBA/SQL 2005应用程序迁移到新技术中,我们有两个选项可以使用Microsoft One Click Deploy或ASP.Net网站构建Windows窗体应用程序吗?
该应用程序是一个劳动力管理系统预约工作动态调度甘特图组件.它将被超过20个地点的400多名用户使用.
你能否就这些选择给我一些反馈.
我需要为返回字典的函数编写单元测试.这本词典中的一个值datetime.datetime.now()当然是每次测试都会改变.
我想在我的断言中完全忽略该键.现在我有一个字典比较函数,但我真的想使用这样的assertEqual:
def my_func(self):
return {'monkey_head_count': 3, 'monkey_creation': datetime.datetime.now()}
... unit tests
class MonkeyTester(unittest.TestCase):
def test_myfunc(self):
self.assertEqual(my_func(), {'monkey_head_count': 3}) # I want to ignore the timestamp!
Run Code Online (Sandbox Code Playgroud)
这样做有什么最佳实践或优雅的解决方案吗?我知道assertAlmostEqual(),但这对浮子iirc只有用.
在WWW或其他方面,UTF-8在非英语文本中的使用有多广泛?我对统计数据和特定国家的情况感兴趣.
我知道ISO-8859-1(或15)在德国已经根深蒂固 - 但是对于你必须使用多字节编码的语言,比如日本或中国呢?我知道几年前,日本几乎只使用各种JIS编码.
鉴于这些观察结果,UTF-8是最常见的多字节编码甚至是真的吗?或者更确切地说,它基本上只在内部用于专门针对国际市场和/或必须使用多语言文本的新应用程序中?现在是否可以使用仅在其输出中使用UTF-8的应用程序,或者每个国家市场是否希望输出文件采用不同的遗留编码以便其他应用程序可用.
编辑:我不是在问UTF-8是否有用或为何如此有效.我知道这一切.我在问它是否真的被广泛采用并取代旧的编码.
在http://blogs.msdn.com/ericgu/archive/2004/01/29/64717.aspx上,我们了解到C#不会将带有结构的方法作为形式参数进行内联.这是由于对堆栈的潜在依赖,例如递归吗?如果是这样,我可以通过将struct参数转换为这样的ref参数来获益吗?
public int Sum(int i)
{
return array1[i] + array2[i];
}
Run Code Online (Sandbox Code Playgroud)
变成:
public int Sum(ref int i)
{
return array1[i] + array2[i];
}
Run Code Online (Sandbox Code Playgroud)
编辑:我去尝试测试,但我无法获得任何内联.这是我尝试过的:
class Program
{
private static string result;
static void Main(string[] args)
{
Console.WriteLine(MethodBase.GetCurrentMethod().Name);
Console.WriteLine();
m1();
Console.WriteLine(result);
}
private static void m1()
{
result = MethodBase.GetCurrentMethod().Name;
}
}
Run Code Online (Sandbox Code Playgroud)
它打印"m1"作为第二行,表示它没有内联.我构建了一个Release版本并使用Ctrl-F5运行它(不附加调试器).有任何想法吗?
好
我在Windows Server 2003(32位)上的IIS6中有一个Asp .net 3.5网站.
在子虚拟目录中使用Asp.Net 1.1 WebApplication.(这被设置为使用较旧的1.1 .net运行时,并配置了它自己的应用程序池.所以对于所有意图和目的是完全独立的.
除了它继续继承根网站的.net 3.5 web.config.
我试过添加
<location path="." inheritInChildApplications="false">
Run Code Online (Sandbox Code Playgroud)
到根网站web.config但它似乎不起作用.
实际上,错误很奇怪
<sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
Run Code Online (Sandbox Code Playgroud)
这是从.net 1.1运行时使用网站路径WEBSITE/OLD_WEBAPP报告的,但它是关于webSite(如.net 3.5中的)web.config以及它如何不理解sectionGroup标记上的type属性.
我究竟做错了什么?请告诉我这是显而易见的事情.谢谢
我有一个网页,打算加载到一个人的iPhone上.加载页面时,我想隐藏顶部的状态和地址栏.我见过其他网站都这样做.为了实现这一目标,我将以下代码放在我的网页部分:
<meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=yes;" />
<script type="text/javascript">
function page_Load() {
setTimeout(function() { window.scrollTo(0, 1); }, 100);
}
</script>
Run Code Online (Sandbox Code Playgroud)
"page_Load"函数是通过页面body元素的onload事件触发的.奇怪的是,当页面加载时,状态/标题栏被隐藏,但不是地址栏.
网页加载时如何隐藏状态/标题栏和地址栏?
谢谢!
我正在尝试删除以下脚本中的CDATA包装器(内容必须由CDATA包装以传递XHTML验证):
<script id="tplTest" type="text/html">
//<![CDATA[
<p id="msg">Hello</p>
<p>Another test: <#= ddd.ArtID #></p>
//]]>
</script>
Run Code Online (Sandbox Code Playgroud)
JavaScript的:
var strTmp = document.getElementById("tplTest").innerHTML;
var strNew = strTmp.replace(/[\/(\/!\[)\]CDATA]/g, "").replace(/[(\/\/\]\])]/g, "");
Run Code Online (Sandbox Code Playgroud)
除了开始/结束(<,>)标记之外,它最多删除CDATA标记:
<
<p id="msg">Hello<p>
<p>nother test: <#= ddd.rtI #><p>
>
Run Code Online (Sandbox Code Playgroud)
问:我应该如何修改正则表达式来进一步除去这些开头和结尾<,>标签?
c# ×3
.net ×2
asp.net ×2
javascript ×2
api ×1
cdata ×1
collections ×1
inline ×1
iphone ×1
java ×1
jpa ×1
modeling ×1
optimization ×1
python ×1
regex ×1
sql-server ×1
t-sql ×1
unit-testing ×1
utf-8 ×1
web-config ×1