问题标签 [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.
apache-cayenne - 如何使用 Apache Cayenne 定义多列唯一约束?
与规范化数据库模型设计中的常见情况一样,除了自动生成的表的主键约束之外,我还想定义一个多列唯一约束,Apache Cayenne 允许我通过建模 UI 定义该表。是否可以告诉 Cayenne 特定列或列组对于给定表必须是唯一的?
EG-app_user
定义为(postgresql 语法)的表:
其中id
列必须是唯一的。
我能想到的唯一方法是创建必须在创建数据库后执行的后处理脚本以定义附加约束,但我希望通过 Cayenne 有更好的方法。我错过了什么吗?
这是我能找到的关于这个主题的唯一相关讨论:http: //markmail.org/message/euetcwcn73tfd45o
json - 将 plist 格式文本转换为 json 格式
应用程序使用 Apache Cayenne。
我收到以下格式的字符串。我也可以使用 HashMap 格式的这个字符串。
我想将上面的字符串转换为 json 格式,如下所示
我可能必须创建 POJO 并通过 Map 循环来实现这一点。也许涉及一些递归。
我最终将上面的 json 提供给 jquery querybuilder。
谢谢您的帮助。
java - 启动通过 Apache Cayenne ORM 返回数据的存储过程不起作用
我正在尝试在我的 MariaDB 数据库中启动一个存储过程。我使用 Apache Cayenne 作为 ORM。错误消息表明它找不到存储过程,但我已经为不返回数据的过程工作了。任何熟悉存储过程和 Apache Cayenne 的人可以提供一些指导吗?
Cayenne 使用的 datamap.map.xml 文件中提供了存储过程:
我使用以下代码启动 SP。
启动方法 copyRecipes() 时,Tomcat 返回以下错误消息:
编辑:这是存储过程的定义方式:
EDIT2:我有这个为另一个程序工作。它看起来像这样:
我以同样的方式调用它:
jquery - HashMap 到 cayenne 表达式
我有一个原始的 Cayenne 表达式
我的代码库中有一个 util 方法可以将上述表达式转换为 HashMap。我遍历地图并转换为 JSON 格式并将该 JSON 提供给 jquery QueryBuilder。我在 UI 层更改 JSON 并使用 Jackson 将 JSON 转换为 HashMap HashMap sysout 如下
我需要遍历 HashMap 并将其转换为 Cayenne Expression。
最终结果应该是
请提供代码
java - Apache Cayenne ROP:有没有办法检测我的客户端连接已超时?
我有一个富客户端应用程序,它使用 Apache Cayenne 远程对象持久性框架来访问和存储数据。到目前为止,我一直无法找到一种优雅的方式来检测和处理连接超时。MissingSessionException
在会话超时后尝试执行操作时,客户端和服务器都会抛出A ,但在客户端会捕获此异常,并将堆栈跟踪打印到控制台而不传播给调用者:
有没有一种简单的方法可以检测到连接已失效,以便我可以提示用户重新连接?
ObjectContext
在相关说明中,如果能够重新建立连接,正在使用的现有客户端对象会发生什么情况?PersistentObject
之前在这些上下文中创建的 uncommitted会永远丢失吗?
编辑:这与Apache Cayenne ROP 服务器“没有与请求关联的会话”不同的问题。在 Tomcat 7 上
Edit2:我能想到的唯一(hacky)解决方案是实际运行一个保持活动线程,以定期向 Cayenne 发送低延迟查询,以保持 ROP 会话处于活动状态并单独跟踪应用程序活动并提示用户输入密码如果一段时间没有活动。我用这样的方法看到的问题是,有很多方法可能会错过活动,应用程序并没有真正超时,而且它确实没有解决会话需要超时的根本问题一个原因。
Edit3:我也将这个问题提交给了 Cayenne 用户列表。您可以在此处查看讨论。
apache-cayenne - Cayenne Expression.fromString 不维护括号顺序
我有一个字符串
将其转换为表达式后,它不保持括号顺序
这导致
从逻辑上讲,它可能意味着相同,但我想保持括号顺序以保持正确的分组。
转换为表达式后有没有办法保持括号顺序
java - 如何:使用 PostgreSQL 的 json 和 jsonb 数据类型进行 Java 对象映射
我尝试使用 Apache Cayenne 映射到具有 json 和 jsonb 数据类型的 PostgreSQL 模式。Apache Cayenne 建模器没有数据类型并更改为“OTHER”。当我执行 SQL 以重新创建数据库(最大兼容性所必需的)时,它抛出了错误。
然后我尝试寻找替代方案,如 DataNucleus,以映射到 PostgreSQL 的 json 和 jsonb 数据类型,但发现 Java 驱动程序不支持 PostgreSQL 9.x。(所以我假设 DataNucleus JPO 不支持 PostgreSQL json 和 jsonb 类型。)
那么,映射到 PostgreSQL 的 json 和 jsonb 并与基于 Java 的应用程序的数据写入/检索互操作的解决方案是什么?
java - 如何使用 Cayenne 4.0 + PostgreSQL 9.4 管理 PK 生成
我有:
- PostgreSQL 9.4
- 阿帕奇卡宴 4.0.M3
由一个最简单的表“proba”组成的模式:
CREATE TABLE proba ( id bigint NOT NULL, value character varying(255), CONSTRAINT proba_pkey PRIMARY KEY (id) )
一个简单的 Main 方法:
/li>一个简单的 cayenne-project.xml:
/li>一个简单的datamap.map.xml(手工制作):
/li>
尝试一下,我得到了以下输出:
因此,cayenne 需要一个名为 pk_proba 的序列。为什么?我并不是要生成它。我在我的模式和 Cayenne 映射中都没有提到任何 postgresql 序列。
所以,我有两个问题:
- 如果在提交时没有为特定实体提供身份,我如何抑制 Cayenne 尝试生成 ID 并使 Cayenne 快速失败?
- 我是否可以自定义一种 Cayenne 在我的项目中管理 PK 自动生成的方式(最好的解决方案是不涉及 Cayenne Modeller 的解决方案)?
apache-cayenne - 关系映射字段的值为 NULL
这是我的问题的一个例子:
我有一个名为“Person”的实体(名称:String。CityId:Integer)我在“Person”和“City”之间有一个关系,名为“toCity”。我使用在 ObjEntity 定义中添加“CityId”字段(使用 Cayenen 编辑器),因为我需要它用于其他目的(我需要生成方法 person.setCityId() 和 person.setToCity())
但有时(并非总是)当我获取 Person 实体时,我会得到 CityId 字段的 NULL 值(即使已被赋值),而关系“toCity”被正确获取。
所以:
person.getCityId() 返回 NULL 而 person.toCity().getCityId() 被重视
我哪里错了?