Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用Cayenne从具有多个架构的Postgress数据库生成类_Java_Postgresql_Apache Cayenne - Fatal编程技术网

Java 使用Cayenne从具有多个架构的Postgress数据库生成类

Java 使用Cayenne从具有多个架构的Postgress数据库生成类,java,postgresql,apache-cayenne,Java,Postgresql,Apache Cayenne,我有一个带有多个模式的PostgreSQL数据库,我正在使用ApacheCayenne生成Java类。问题是cayenne跳过了不同模式表上的外键。例如: 表schema\u b.booking引用了schema\u a.my\u user: create table schema_b.booking ( id bigserial not null constraint booking_pkey primary key, address_id integer not null c

我有一个带有多个模式的PostgreSQL数据库,我正在使用ApacheCayenne生成Java类。问题是cayenne跳过了不同模式表上的外键。例如:

schema\u b.booking
引用了
schema\u a.my\u user

create table schema_b.booking
(
    id bigserial not null constraint booking_pkey primary key,
    address_id integer not null constraint cde_fk references schema_b.address
    ...,
    created_by integer not null constraint abc_fk references schema_a.my_user
);
生成的Java类如下所示:

class Booking {
     private Long id; 
     private Address addressId; //this is OK
     private Integer createdBy; //NOT OK (Integer instead of MyUser)
}
控制台日志为不同架构中的每个FK显示此项:

[INFO] Skip relation: 'null.schema_a.my_user.id <- null.schema_b.booking.created_by # 1' because it related to objects from other catalog/schema
[INFO]      relation primary key: 'null.schema_a'
[INFO]        primary key entity: 'null.schema_a'
[INFO]      relation foreign key: 'null.schema_b'
[INFO]        foreign key entity: 'null.schema_b'

[INFO]跳过关系:“null.schema\u a.my\u user.id您是对的,Cayenne只跳过跨架构关系。
这看起来像是一个应该取消的过时限制

如果只执行一次,则可以在Cayenne Modeler中添加这些缺失的关系。如果您需要定期将Cayenne车型与数据库同步,则很难克服此问题。
一个选项是完全跳过关系加载(),并手动创建它们(或使用Modeler中的“推断关系”工具)。在这种情况下,所有其他内容(表和列)应该可以很好地同步。另一个选择是等待4.1.M2版本的Cayenne,我相信它很快就会准备好(虽然没有确切的日期)

谢谢!嗯,我需要定期同步;我将尝试使用Modeler来推断关系。为了澄清,4.1.M2将能够生成跨模式关系?欢迎您!我真的认为,这是一个需要跟踪的问题: