WebObjects/EOF/Modeling/EOModeler 错误
外观
- 属性编辑器怎么会这么 buggy?
- 这分散了 WebObjects 的强大功能
---
你遇到了什么类型的错误?你能具体一点吗?
EOModeler 的第一印象是我们可以用它做很多事情,它通常一开始都能做到。问题是在模型变得更复杂时出现的。
- 模型编辑错误
- 如果你使用继承,而大多数现实生活中的应用程序都是这样做的,EOModeler 会表现出一些非常奇怪的行为。
- 如果你复制粘贴一个由原型定义的属性,它有时不会复制它,或者会复制子项中的部分信息,特别是如果你覆盖了原型的某些属性。(它每次都会丢失主键)
- 父实体中关系的复制粘贴不会反映在子项中。
- 对于一些深度继承,将属性位打开或关闭并不总是传播到子项。
- Project Builder 集成
- 当你生成一个新的 java 文件时,它会弹出一个对话框,询问是否插入到项目中,但点击确定按钮没有任何效果。
合并功能还不错,但我们需要一种更强大的机制来分离生成的代码和自定义代码。
- 运行时错误
- 我知道的一个,而且经常会困扰我,尽管幸运的是并不经常,就是 internalInfo 错误。EOModeler 在模型文件中插入一些运行时不使用的属性。有时这些属性会导致崩溃,例如在原型实体或关系上。
---
新手说
我在尝试将 EOModeler 文件与我的 mySQL 数据库同步时遇到了一个错误。我怀疑这是适配器的问题,但我也不确定。它给我弹出一个警告框:“警告:没有提供原因”。如何调试适配器的操作?我在 omni 或 apple 上找不到任何关于此错误的信息。
我不确定这个功能从 v5 开始就有效,需要手动同步。
“警告:没有提供原因”错误可能是因为你的数据库包含只有主键的表(例如,用于创建多对多关系的表)。EOF 的逆向工程代码在遇到没有类属性的表时会卡住。
另一个错误。我向 Apple 的 Bugreporter 提交了这个错误。
在 WebObjects EOModeler 中,我尝试根据 EOModeler 文档设置多对多关系。这会导致一个问题,即我无法从我的实体生成 SQL 语句。显示一条错误消息,内容为“*** -[NSCFDictionary? setObject:forKey:]: attempt to insert nil value”
- 重现步骤
- 打开 EOModeler
- 按照 WebApplications 文档设置新模型(查看 http://developer.apple.com/documentation/WebObjects/Web_Applications/EnterpriseObjectsApp/chapter_11_section_3.html#//apple_ref/doc/uid/TP30000121/BAJEFFEH)
- 以与上述相同的方式生成第二个名为 Book 的实体。让它只有一个名为“title”的属性和一个名为“bookID”的主键?; 与实体“Author”相同的属性
- 尝试根据“Using EOModeler”文档设置多对多关系?(查看 http://developer.apple.com/documentation/WebObjects/UsingEOModeler/5WorkingWithRelationships/chapter_5_section_7.html#//apple_ref/doc/uid/DontLinkBookID_504-DontLinkChapterID_4-BABGHHGG)
- 切换到图表视图
- 选择两个实体
- 从“属性”菜单中选择“加入多对多”
- 为新创建的实体提供一个表名(例如“AUTHOR_BOOK”?;)
- 从“模型”菜单中检查一致性(一切正常)
- 尝试通过选择第一个实体“Author”,然后从“属性”菜单中选择“生成 SQL...”?;,生成用于创建模型表的 SQL 命令。
- 砰!错误消息。
- 结果
我希望该命令能够完美地运行并生成 SQL 语句,以便我可以创建我的表并使用我的模型。
- 回归
尝试不同的项目设置,隔离到最少的表数量。重新阅读文档。没有解决方案。