问题标签 [composite-key]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
nhibernate - NHibernate 复合键
我创建了一个复合键,它正在工作,但理想情况下我希望在行类中直接单独的字段。
我这样做的当前方式如下:
我想知道是否有更好的方法来做到这一点?可能在 NHibernate 配置文件中。
我当前的配置文件如下:
php - 复合键的替代方案
我有数据库结构,其中所有表都有两列作为主键。
例如,表 Author 有两列,例如 AutherId,它是一个自动递增的数字,而 pc_id 是该 pc 唯一的,它们是表的复合键。但是当涉及到关系时,我必须为每个关系定义两列。并且由于我打算使用 Docrtine (PHP ORM),所以这样使用它有点问题。
所以我想知道我是否可以生成一个唯一的 id(也结合 pc_id)并将其用作主键。
php 代码就像 time() 。兰德(1000,9999)。$pc_id
这样 id 是通过连接时间 + 1000 到 9999 之间的随机数和 pc_id 生成的(pc_id 也是从 1 开始的数字)。但这会产生一个需要 bigint 存储的 20 位数字(当 pc_id 为 6 位时)
有没有一个很好的选择
问候
entity-framework - 如何首先在 Entity Framework 4 代码中映射复合主键?
我首先要掌握 EF4 代码,并且到目前为止我很喜欢它。但是我无法将实体映射到具有复合主键的表。
我尝试过的配置如下所示:
引发此异常:无法推断实体类型“订阅用户”的键。
我错过了什么?
java - JPA 2.0、PostgreSQL 和 Hibernate 3.5 中的混合代理复合键插入
首先,我们使用 JPA 2.0 和 Hibernate 3.5 作为 PostgreSQL 数据库上的持久性提供程序。
我们通过 JPA 2.0 注释成功地将数据库序列用作单字段代理键的自动生成值,并且一切正常。
现在我们正在实现一个双时态数据库方案,该方案需要以下方式的混合键:
现在我们有一个问题。你看,如果我们INSERT
是一个新元素,该字段id
是自动生成的,这很好。只有,如果我们想要UPDATE
在这个方案中的字段,那么我们必须更改validTimeBegin
列而不更改id
-field 并将其作为新行插入,如下所示:
在更新行之前:
在恰好 2010-05-01-10:35:01.788 服务器时间发生的行更新之后:
所以我们的问题是,使用自动生成的字段序列这根本不起作用,id
因为当插入新行时,id 总是自动生成的,尽管它确实是复合键的一部分,有时应该表现不同。
所以我的问题是:有没有办法通过 JPA 告诉休眠停止自动生成id
-field,以防我想生成同一个人的新变种,并在其他情况下照常继续,或者我必须用自定义代码接管整个 id 生成?
在此先感谢,杰拉德
asp.net - NHibernate 使用复合键更新
我有一个表格定义,如下所示:
执照
ClientId 和 Type 一起唯一标识一行。我有一个映射文件,如下所示:
如果客户使用许可证创建用户,我需要更新表中的 Used 列。当我在映射 xml 中将 ClientId 列设置为该表的 id 列时,我得到了 TooManyRowsAffectedException。
您能否让我知道如何在映射级别设置复合键,以便 NHibernate 可以根据 ClientId 和 Type 进行更新。
类似于:Update License SET Used=Used-1 WHERE ClientId='xxx' AND Type=1
请帮忙。
谢谢, 马赫什
replace - multi_index 复合键替换为迭代器
无论如何要遍历 boost::multi_index 中的索引并执行替换?
java - 休眠自动增量不起作用
我的数据库中有一个用 Identity(1,1) 设置的列,我无法让休眠注释为其工作。当我尝试创建新记录时出现错误。
在我的实体中,我有以下内容。
但是当我尝试添加新记录时,出现以下错误。
当 IDENTITY_INSERT 设置为 OFF 时,无法在表“MemberSelectedOptions”中插入标识列的显式值。我不想将 IDENTIY_INSERT 设置为 ON,因为我希望数据库中的标识列来管理这些值。
运行的 SQL 如下;您可以清楚地看到插入的位置。
我错过了什么?
.net - LINQ 对复合键的可悲处理
我有一个表,它有一个由两个 int 字段和一个 varchar(50) 字段组成的复合键。我将复合键设为我的主键,而我通常不会这样做。是的,是的,是的,我对逻辑键与代理键的辩论非常熟悉,但我一定在我上桌的那天做了一些重药(不是真的),因为我采用了逻辑键方法使用代理(我几乎总是这样做)。
我的问题:LINQ 不允许我对作为复合键一部分的 varchar(50) 列进行更新。它抛出异常“属性‘值’是对象的关键信息的一部分,不能被修改。” 'Value' 是该字段的名称(请不要教我在列名中使用保留字......就像我已经说过的那样,那天我正在服用严重的药物)。
那么,除了在岩石和坚硬的地方之间,这给我留下了什么?有问题的表实际上确实有一个唯一的标识列(即使它不是主键),并且该列被用于另一个表的外键。所以,呃,我不能很容易地做一些黑客攻击,比如删除有问题的记录并重新添加它,因为这会迫使我跟踪其他表中的 fk,然后再重新添加它们。什么样的恶梦...
任何人都知道一个简单的方法来解决这个问题,而不会强迫我对我的表结构进行大量更改?
c++ - 如何使用 Composite_key 为 multi_index_container 编写自定义谓词?
我用谷歌搜索了boost的人,但没有找到任何例子。可能这是一个愚蠢的问题......无论如何。
所以我们有这个人的著名电话簿:
my_custom_comp() 应该如何?我的意思是这对我来说很清楚然后它boost::multi_index::composite_key_result<CompositeKey>
作为一个参数(由于编译错误:)),但是在那种特殊情况下 CompositeKey 是什么?
提前致谢。