问题标签 [ebean]
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.
java - Ebean:奇怪的结果
这是我的主题的数据成员:
在 postgresql 中保存为 bigint 的论坛属性(论坛类的 id)
这是我的主题查找器:
现在,我正在尝试使用 Finder做最简单的事情。按论坛 ID 检索主题。
我尝试了很多变化,这是其中之一:
我得到错误的结果。我必须做错事,但不知道是什么。
playframework - 在 Play 2 中如何进行实例级模型验证?
我需要一些跨多个字段的复杂验证逻辑。每次调用模型上的 save() 或 update() 时,有没有办法做到这一点?我目前使用 Ebean 作为我的 ORM。我现在能想到的唯一方法是覆盖 save() ,例如:
有没有更标准化的方法来做到这一点?
java - 在我的 Play 应用程序中使用 Ebean/JPA,如何删除 OneToOne 关系中的对象?
我有以下课程:
在数据库中,它看起来像这样:
现在在一个控制器方法中(对于那些熟悉 Play 的人)我有一个对象 A,并且想从数据库中删除它的属性“b”。这也应该级联到 c,因此 c 也被删除。这是我目前的做法:
但是,这会引发异常:
[PersistenceException: ERROR execution DML bindLog[] error[Cannot delete or update a parent row: a foreign key constraint failed (
databasename
.a
, CONSTRAINTfk_a_payme_4
FOREIGN KEY (b_id
) REFERENCESb
(id
))]]
它基本上归结为我试图删除 b 的事实,而 a 在 b_id 列中仍然持有对 b 的外键引用,所以我应该首先将该引用设置为 null。
在 Java 中,这转换为:
这确实将对象 a 中对 b 的引用设置为 null 并正确删除 b 对象,但 c 不会从数据库中删除。(为什么?我虽然级联属性会处理这个问题)我发现解决这个问题的唯一方法是显式删除 c ,就像这样:
不过我对此不是很满意,因为这已经是删除数据库中两行的 8 行代码了,如果这张图中有更多的关系会更多。
至于我的问题:
如何从 a 中删除 b,以便首先自动删除从 a 到 b 的引用,以及如何确保在删除 b 时也删除 c?
先感谢您!
编辑:迄今为止最好的想法:将ab关系的所有权移至b。
playframework-2.0 - Ebean 能否正确生成 Microsoft SQL Server DDL?
我使用 Microsoft 的驱动程序成功连接了 Windows Azure DB,并且通常通信正常,但是我发现 Ebean 生成的 DDL 与它使用的示例不兼容 MS 的规范,auto_increment
而identity
不是永远不要尝试使用字段等nvarchar
。ntext
实际上,目前我正在手动管理我的 Azure 架构,但我只是好奇是否Ebean
可以做到这一点?
java - 我们如何提高 Ebean 的远程性能?
(免责声明:这是一个非常开放的问题,而且我认为不会只有一个正确答案,无论如何请不要关闭它,也可以考虑将答案添加到社区维基)
我们正在使用Ebean
作为主要 ORM 的 Play 应用程序,当我们在本地服务器上处于开发模式时,一切都非常好。但应用程序的目标环境是云 + 远程 SQL 服务器。连接到目标数据库后,我们发现了在本地环境中不可见的一件事:Ebean
执行单独查询的时间比手动编写的语句长很多倍。例如:
陈述
此查询resultSet
在~1200ms内执行一系列子查询:
豆豆
使用相同的操作resultSet
Ebean
需要大约6500 毫秒。(Media
模型没有任何关系,所以没有任何连接):
编辑: 本地环境差异并不像一般情况下所有查询都快得多。
当然,有很多地方可以将查询系列替换为单个查询系列,但这并不总是可能的。有时我们需要在一个请求中查询多个不同的表。在其他情况下,我们需要在不同数据库之间一一匹配数千条记录,等等。
我们还发现,例如,Page<Media>
当传递给 Play 的视图时,该类对其列表中的每个项目执行单独的选择。在这种情况下,很容易getList()
在控制器中传递它List<Media>
并添加一些信息以使用普通类型参数进行分页,但是......一次得到它真是太酷了:)
那么问题...
- 如何
Ebean's
优化配置? - 如何优化查询(即提到
List
而不是Page
,或使用find.where().in(..., ...)
而不是使用语句单独获取每个对象for()
)。还有什么? - Ebean 还有其他让我们感到惊讶的事情吗(比如
Page
分别查询 's 的项目)?
many-to-many - Ebean 多对多到同一实体
我正在尝试映射多对多的关系,其中每个用户都有一组朋友,这些朋友也是用户。在数据库表中,这是使用名为 user_friend 的关联表解决的。user_friend 表有两列 user1 和 user2 是用户表中用户 ID 的外键。
最佳解决方案是不为 user_friend 表创建 java ebean 模型,而是让 user 模型有一组用户,其中当前用户是 user_friend 表中的 user1 或 user2。然后映射必须以某种方式引用 user_friend 表中的两列......
这可能吗?
已编辑:添加了 1.sql 的 SQL
问题是,希望每个用户实例都有一组用户,他通过 user1 或 user2 链接到这些用户。
ebean - Ebean 在查询中使用 OR
我正在尝试进行查询,以检查用户的电子邮件或用户名是否以给定的字符串开头。在 sql 查询中,我会使用
在 ebean 查询中,我希望编写如下内容:
问题是 or 接受一个表达式,而不是一个表达式列表,这是我在编写时得到的
据我了解,它执行这样的查询:
正在使用 AND。
如何使用 ebean 编写这样的查询?
谢谢!
java - Play framework 2.0 尝试级联删除时出错“参数“#1”未设置;SQL语句:delete”
我的示例中的完整错误行是“[PersistenceException: org.h2.jdbc.JdbcSQLException: Parameter "#1" is not set; SQL statement: delete from class4 where (class3_id) in (?) [90012-158]]”
这发生在我的单元测试中,所以决定创建一个测试项目来尝试重现它,它确实做到了。
基本上,我有 1-4 类,每个类都与 onetomany 相关,我尝试创建它们,然后按 1、2、3、4 4、3、2、1 的顺序删除它们,但我收到此错误。
除了数字之外,这些类都是相同的(最后一个类没有列表
我的导致错误的应用程序代码运行如下
我还附上了一个示例应用程序,显示它正在发生,如果有人能指出我做错了什么,或者如果有人知道我如何解决它,如果它是 API 的一个错误,我将非常感激。
http://stowelly.co.uk/play-2.0.3-persistence-test.zip
谢谢你
java - 无法在 Play 2 中使用多个 ebean 数据库
我们正在使用 Play Framework 2.0.3 设置一个稍微复杂的项目。
我们需要访问几个数据库(预先存在的),并希望使用框架内置设施(即 EBean)来完成它。
我们尝试在“models”包中创建所有模型类,然后将每个类及其 FQN 映射到 application.conf 中相应的 EBean 属性:
这似乎不起作用:
我们查了又查,配置没问题!
然后,我们尝试为每个数据库模型类使用不同的 Java 包,并在 application.conf 中相应地映射它们:
这在从数据库中读取信息时可以正常工作,但是当您尝试保存/更新对象时,我们会得到:
有任何想法吗?
谢谢!里卡多
playframework - Play Framework: 2.0.2 PersistenceException:Cannot register class in Ebean server
首先,这个问题可能看起来很像: Play Framework: PersistenceException: The type is not an registered entity? (Ebean)但它不是......
我正在尝试保存一个实体,但它甚至不呈现模板,在我重新启动 Play 后它只会给出主题中的错误。当然,应用程序会编译。
我已经完成了在 Play 中使用 EBean 的所有步骤:
@Entity
带有(javax.persistence.Entity)的注释模型- 模型扩展模型 (
play.db.ebean.Model
) - 我的 Ebean 已启用
application.conf
ebean.default="models.*"
(我的课程在models
包中)
有什么建议么?我能做的测试?要检查的东西?公平地说,stackoverflow 是我最后的手段......
提前致谢,
完整的堆栈跟踪: