- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Fluent NHibernate 创建一个 ASP.NET MVC 项目,由用户提交和投票(上/下)。
当然,用户可以投票提交 Up 或 Down。为了记录这一点,我创建了一个中间表 SubmissionVote,其中包含以下字段:
submissionId (int)
userId (int)
score (enum: up/down)
这是我的映射:
提交
Id(x => x.Id);
...
References(x => x.User).Column("userID").Not.LazyLoad();
HasMany(x => x.Votes).Cascade.All().KeyColumn("submissionID").Table("SubmissionVote").Not.LazyLoad();
Table("Submission");
用户
Id(x => x.Id);
...
HasMany(x => x.Submission).Inverse().KeyColumn("userID").Cascade.All();
HasMany(x => x.SubmissionVotes).KeyColumn("userID").Cascade.All().Table("SubmissionVote");
投稿投票
Map(x => x.Vote).Column("score");
CompositeId().KeyProperty(x => x.Submission.Id, "submissionID").KeyProperty(x => x.User.Id, "userID");
References(x => x.Submission).Column("submissionID");
References(x => x.User).Column("userID");
由于我的数据库中的中间表有一个分数字段,我创建了 SubmissionVote 类来表示它。该类中的用户和提交字段与其各自的类是多对一的关系。
问题是这样的:SubmissionVote 类需要有一个 ID 属性,否则 NHibernate 会产生错误。情况不应如此,因为 SubmissionVote 的 ID 是一个复合 ID,如映射中所示。
我可以忍受,但它会导致另一个问题。当我尝试使用 session.SaveOrUpdate(submission) 保存其中包含一些 SubmissionVotes 的提交时,我收到此错误,即 MySQL 抛出的 ArrayOutOfBounds 异常,如以下问题:How can I use a composite-id with a class as the id field in fluent nhibernate? .
查看 NHibernate 日志,我可以看到发送到 MySQL 的查询。
14:53:07.358 [9] DEBUG ... - Building an IDbCommand object for the SqlString: INSERT INTO `SubmissionVote` (score, submissionID, userID) VALUES (?, ?, ?)
14:53:07.361 [9] DEBUG ... - binding 'Up' to parameter: 0
14:53:07.367 [9] DEBUG NHibernate.Type.Int32Type - binding '183' to parameter: 1
14:53:07.367 [9] DEBUG NHibernate.Engine.IdentifierValue - unsaved-value: 0
14:53:07.367 [9] DEBUG NHibernate.Type.Int32Type - binding '2' to parameter: 2
14:53:07.367 [9] DEBUG NHibernate.Type.Int32Type - binding '0' to parameter: 3
显然,NHibernate 试图在查询中包含一个默认的“ID”值('0')(可能是我添加到 SubmissionVote 的 ID 属性)。
这两个问题有关联吗?我该如何解决这个问题?
非常感谢!
编辑
这是由 NHibernate 生成的我的(部分但相关的)模式。
create table submission (
Id INTEGER NOT NULL AUTO_INCREMENT,
CreationDate DATETIME,
BeginDate DATETIME,
EndDate DATETIME,
Content VARCHAR(255),
userID INTEGER,
primary key (Id)
)
create table User (
Id INTEGER NOT NULL AUTO_INCREMENT,
UserName VARCHAR(255) unique,
Password VARCHAR(255),
Email VARCHAR(255),
primary key (Id)
)
create table `submissionVote` (
submissionID INTEGER not null,
userID INTEGER not null,
score VARCHAR(255),
primary key (submissionID, userID)
)
alter table `submissionVote`
add index (submissionID),
add constraint FKC2AE73C56C66D2D5
foreign key (submissionID)
references submission (Id)
alter table `submissionVote`
add index (userID),
add constraint FKC2AE73C5EC6C1277
foreign key (userID)
references User (Id)
alter table submission
add index (userID),
add constraint FKE6354599EC6C1277
foreign key (userID)
references User (Id)
最佳答案
我找到了解决方案!实际上,我必须向 NHibernate 指定 composite-id 也恰好是我的引用。
新映射如下所示:
Map(x => x.Vote).Column("score");
CompositeId().KeyReference(x => x.Submission, "submissionID").KeyReference(x => x.User, "userID");
关于mysql - (Fluent) NHibernate composite-id 问题 : MySQL complains that the parameter index is out of bounds,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2036036/
目前我正在尝试创建一个 Web 部署包。所以我在我的项目的根目录中添加了一个 parameters.xml 并指定了一些自定义参数。 我发现我的很多参数都部分相同。所以我想做某种参数引用。寻找这个,我
如何设置我的 Symfony 2 项目以使用 parameters.yml 而不是 parameters.ini? 在 Controller 中,我可以像这样从 parameters.ini 中获取变
有什么建议说明为什么此 AWS CloudFormation 不断回滚吗? { "Description" : "Single Instance", "Resources" : {
PARAMETERS: p_1 TYPE i, p_2 TYPE i. 因此在初始屏幕中,我看到了 2 个文本框,每个参数一个。 如果我填写其中一个,但不按回车键,然后我在第二个上调用 F4 帮助,我
我需要存储 Parameter由 Build() 返回作为 Parameter (因为我将参数存储在一个数组中,另一种方法就是为每个参数数量复制粘贴相同的类太多,因为 c# 没有可变参数泛型)。 问题
我正在为我的 CS 类(class)做作业,它使用了 const,我对何时使用它们感到有点困惑。 这3个函数有什么区别? int const function(parameters) int fu
在 xgboost 的文档中,我读到: base_score [default=0.5] : the initial prediction score of all instances, global
我正在创建一个新的 REST 服务。 向 REST 服务传递参数的标准是什么。在 Java 的不同 REST 实现中,您可以将参数配置为路径的一部分或请求参数。例如, 路径参数 http://www.
在我的程序中,我需要验证传递给程序的参数是一个整数,所以我创建了这个小函数来处理用户键入“1st”而不是“1”的情况。 问题是它根本不起作用。我尝试调试,我只能告诉你参数是 12,long 是 2。(
谁能告诉我如何使用存储在 &rest 指定值中的参数。 我已经阅读了很多,似乎作者只知道如何列出所有参数。 (defun test (a &rest b) b) 这很高兴看到,但并不是很有用。 到目前
我使用 git 有一段时间了,但大多数时候我更喜欢与 Intelij IDEA 的集成。现在,为了扩展我对系统的知识和理解,我决定更多地使用命令行。我观察到的是有两种类型的参数: --paramete
我正在用 RAML 编写一些 REST 文档,但我被卡住了。 我的问题: - 我有一个用于搜索的 GET 请求,它可以采用参数“id”或( 独占或 )“引用”。拥有 只有其中之一 是必须的。 我知道怎
我定义了一个这样的 Action : /secure/listaAnnunci.action /login.jsp 我可以从 Action 内部访问参数吗?谢谢 最佳答案 您需要实现 S
我有一个 TeamCity 8.0.3 项目,其中包含多个配置,其中有一个通用参数(定义为项目参数):targetServerIP .这些配置之一是“一键部署”,它通过使用快照依赖项启动其他配置。我已
try{ Class.forName("com.mysql.jdbc.Driver"); mycon = DriverManager.getConnec
我在实际的 javascript 项目中遇到了一个非常奇怪的情况。我创建了一个自定义事件并将数组放入该事件 $.publish("merilon/TablesLoaded", getTables())
在使用参数数组进行插入/更新期间,可以忽略一个/一些特定行的一个/一些参数。 我提供了一个简单的例子。想象一下,我们有一个包含 3 列的表:X、Y 和 Z。我们想在 block 中执行更新(如果缺少某
如何编写接受未定义参数的函数?我想它可以像那样工作: void foo(void undefined_param) { if(typeof(undefined_param) == int) {
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界. 这篇CFSDN的博客文章PDO版本问题 Invalid parameter number: no
Jenkins 管道作业如下所示: 部分 Jenkinsfile(我们使用脚本化管道)是: properties([parameters([string(defaultValue: "", descr
我是一名优秀的程序员,十分优秀!