问题标签 [apache-cayenne]

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.

0 投票
1 回答
332 浏览

java - CayenneModeler 不生成 Cayenne.xml

我正在学习 Apache Cayenne,所以我是新手。

我正在关注官方指南http://cayenne.apache.org/docs/3.0/tutorial.html

我所做的与指南所说的完全相同,但是当我保存项目时,它会生成 2 个 xml 文件,而不是 3 个,并且当我运行 java 应用程序(使用生成的类)时会出现以下错误:

我不知道发生了什么

0 投票
1 回答
85 浏览

java - 使用 Apache Cayenne 过滤数据库中不存在的自定义字段

在我的 API 中,目前可以过滤数据库中存在的所有字段。

过滤在 API 项目的 FilterUtils.java 中实现。这会将 url 参数转换为 Apache Cayenne 搜索并将结果返回给资源。

在“主”项目中,为 com.foo.bar.auto 中的每个数据库表生成了类,这些类由 com.foo.bar 中的类扩展。com.foo.bar 中的类可以有自定义函数。一个例子是 Document.getAccount。

Document.getAccount 在 API 中公开,但无法过滤它,因为它不是数据库字段。我需要能够过滤像Document.getAccount.

是否可以以某种方式在 Cayenne 中注册这些功能?

搜索自定义字段的语法需要与今天的过滤语法相同。因此,在搜索帐户时,它应该如下所示:Document?filter=account(EQ)1234.

有任何想法吗?感谢所有帮助。

0 投票
1 回答
237 浏览

apache-cayenne - Apache Cayenne:用户定义表:示例?

我正在将 Apache Cayenne 作为我的新应用程序的 ORM 层。

我的部分数据库模型将在一个固定模型中定义,该模型将在编译时知道。

但是,模型的另一部分将在运行时由某些有限的用户操作定义。因此,这些操作将产生创建某些简单表、在这些表中添加和删除列、删除表等的效果。

基于其通用的持久对象特性,Cayenne 似乎非常适合这一点。

https://cayenne.apache.org/docs/3.1/cayenne-guide/persistent-objects-objectcontext.html

我正在寻找一些示例,说明如何将用户定义的 DbEntity 引入 Cayenne 运行时,生成并运行 CREATE / ALTER / DROP SQL,然后指定某些通用持久对象由某些用户定义的表支持。

0 投票
1 回答
125 浏览

apache-cayenne - Apache Cayenne:提供动态生成的项目定义

从这个问题开始:

Apache Cayenne:用户定义表:示例?

作为我设计的一部分,我打算允许在运行时修改数据库模式的操作。正如上述问题中所讨论的,Cayenne 似乎确实支持这一点。

我对如何在不使用文件系统的情况下将新项目定义提供给 ServerRuntime 很感兴趣。

查看源代码后,我似乎有两个选择:

(1) 实现一个自定义类加载器,将其设置为线程本地类加载器,并允许Cayenne使用ClassLoaderResourceLocator找到它。

(2) 实现一个自定义的ResourceLocator,并使用注入绑定它。

很清楚我将如何做 (1) 但可以说 (2) 有点整洁,因为它不依赖于 ClassLoaderResourceLocator 的行为。

(2) 是否合理,我将如何编码?

0 投票
1 回答
119 浏览

apache-cayenne - 从另一个回调方法触发回调方法

我有一个创建分配对象的 PrePersist 回调。我需要触发回调,让我知道这些分配对象何时插入数据库。分配的 PostPersist 回调不会以这种方式触发。触发的唯一回调是 PostAdd,这对我没有帮助。我该怎么做呢?谢谢。

0 投票
1 回答
157 浏览

java - Apache Cayenne:commitChanges 时出现 NullPointerException

我正在尝试 commitChanges,但捕获 java.lang.NullPointerException。日志:

表 AUTO_PK_SUPPORT 已创建并填充 Apache Cayenne。为什么抛出异常?

0 投票
0 回答
477 浏览

java - 使用 Apache Cayenne 插入数据时的查询

我在 java 8 中编写了一个代码,以使用 apache cayenne 3.1 在 sql server 2012 中插入数据。执行代码时出现异常:org.apache.cayenne.CayenneRuntimeException: [v.3.1 Sep 20 2014 14:24:57] Commit Exception Caused by: java.sql.SQLException: Could not find stored procedure 'auto_pk_for_table'

我已经通过将我在 cayenne 建模器中的 pk 生成策略从默认更改为数据库生成来解决了这个问题。但是当我再次执行我的 java 代码时,假设只在数据库中插入 1 条记录,但它也插入了我在异常中得到的上一条记录。我已经尝试三次创建相同的场景,但得到了相同的结果。我也尝试在出现异常后重新启动我的 Web 服务器和 SQL Server 服务,但是在插入新数据的同时也插入了异常记录。这个问题也可以通过在我的 catch 块中插入一个回滚语句来解决。

但我想知道 apache cayenne 在插入新数据时如何以及为什么插入异常数据。

这是我的代码。 Java : 人道

XML 文件: cayenne-test.xml

TestDataMap.map.xml

0 投票
1 回答
343 浏览

java - 如何在不使用 select 子句的情况下使用 apache cayenne 更新记录

我正在使用 apache 卡宴 3.1。我知道更新数据库中记录的一种方法是首先使用选择查询来查找记录然后更新它,但我不想使用选择查询进行更新。如何直接更新记录?

0 投票
1 回答
747 浏览

jdbc - ORM (Apache Cayenne)、JDBC 或 SpringJDBC 哪个更好?

我正在处理具有大量事务和复杂查询的多个数据库,例如 MSSQL 服务器和 PostgreSQL。我搜索过简单的 jdbc 比 ORM 更快。我正在考虑使用 ORM,因为我不想为相同的工作为不同的数据库编写不同的查询,也不想为了标准化我的 dao 层。我在不使用外键的情况下映射我的数据库表,对于像 apache cayenne 这样的 ORM,我必须映射具有外键约束的表,所以我可以使用我的 Joins 或任何其他多表操作。用ORM好还是简单的jdbc好。

0 投票
1 回答
337 浏览

java - Cayenne Cache - 查询缓存是否替换对象缓存?

我正在寻找有关如何在集群中或使用同一域的多个 JVM 中最佳配置 cayenne 的资源。我一直在阅读文档,我看到了这个:

“有一些方法可以通知其他堆栈有关对象更改。这可以在建模器中设置。但是,每次更改的完全同步通常会导致过多的网络流量和 CPU 消耗,并且通常避免使用描述的查询缓存方法本章其他地方。”

链接到查询-结果-缓存页面。据我了解,当通过 getter 检索关联对象或通过其 id 检索对象时,使用对象缓存。这句话是否告诉我,如果我配置查询缓存,则不会使用对象缓存?或者我需要避免这样做会影响我的应用程序代码中的对象缓存?我应该完全禁用对象缓存(如果可能的话)?如果我没有设置 cayenne 来通知其他堆栈对对象缓存的更改,我是否会冒着过时数据的风险?

我很欣赏有关跨多个节点运行 cayenne 的最佳方式的任何和所有提示,或者如果您有一些资源可以指点我,那也将非常有帮助。

在此先感谢您的时间!