Manuelle Linked Reference
Posted: Tue Jun 27, 2017 12:16 pm
Ich versuche mich gerade an einem Prototypen für eine neue Applikation. Leider habe ich das Problem, dass die Storage bei
Datenbank ist Oracle 11.2.0.4.0.
JVx-Version ist die 2.7 beta aus der letzen VisionX Version.
DDL:
Server-code:
Im Screenshot-Attachment sieht man, wie durch den AutoLink Reference die Firmanummer des verantwortlichen Mitarbeiters angezeigt wird. Mein Ziel wäre jedoch der Name.
Ich habe hierzu keine API (bzw. Hilfe im Forum) gefunden, wo ich gezielt ansteuern kann, welche Spalten der referenzierten Tabelle ich nun anzeigen will. Gibt es solche überhaupt?
Bzw. gibt es die Möglichkeit die Link Reference manuell zu erstellen sowie die zugehörige "fremde" Spalte?
Prinzipiell kann ich ja eine ColumnMetadata zu den Metadata der Storage hinzufügen, so wie ich eine StorageReferenceDefinition auf der ColumnMetadata setzen kann, jedoch nicht auf der Storage.
Ich wäre dankbar wenn ich das ohne View lösen könnte, da es sich bei dem Schema um ein Fremdsystem handelt, auf welche wir nur Leserechte haben.
- Code: Select all
setAutoLinkReference(true)
Datenbank ist Oracle 11.2.0.4.0.
JVx-Version ist die 2.7 beta aus der letzen VisionX Version.
DDL:
- Code: Select all
CREATE TABLE "MITARBEITER" (
"ID" NUMBER(11,0),
"FMNR" VARCHAR2(5) NOT NULL ENABLE,
"PSNR" VARCHAR2(10) NOT NULL ENABLE,
"NAME" VARCHAR2(40),
...,
CONSTRAINT "MITARBEITER_PK" PRIMARY KEY ("ID"));
CREATE TABLE "THEMEN" (
"THEMA" VARCHAR2(265) NOT NULL ENABLE,
"VERANTW_ID" NUMBER(11,0),
"KUNDENRELEVANZ" NUMBER(3,0) DEFAULT 0 NOT NULL ENABLE,
"BESCHREIBUNG" VARCHAR2(4000),
CONSTRAINT "THEMEN_PK" PRIMARY KEY ("THEMA"),
CONSTRAINT "THEMEN_VERANTW_FK" FOREIGN KEY ("VERANTW_ID") REFERENCES "MITARBEITER" ("ID") ENABLE);
CREATE TABLE "WISSENSSTAND" (
"THEMA" VARCHAR2(256) NOT NULL ENABLE,
"MITARBEITER" NUMBER(11,0) NOT NULL ENABLE,
"WISSENSSTAND" NUMBER(3,0) NOT NULL ENABLE,
"INTERESSE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE,
CONSTRAINT "WISSENSSTAND_PK" PRIMARY KEY ("THEMA", "MITARBEITER"),
CONSTRAINT "WISSENSSTAND_THEMA_FK" FOREIGN KEY ("THEMA") REFERENCES "THEMEN" ("THEMA") ENABLE,
CONSTRAINT "WISSENSSTAND_MITARB_FK" FOREIGN KEY ("MITARBEITER") REFERENCES "MITARBEITER" ("ID") ENABLE);
Server-code:
- Code: Select all
public DBStorage getThemen() throws Exception {
DBStorage dbsThemen = (DBStorage) get("themen");
if (dbsThemen == null){
dbsThemen = new DBStorage();
dbsThemen.setDBAccess(getDBAccess());
dbsThemen.setWritebackTable("themen");
dbsThemen.setAutoLinkReference(true);
dbsThemen.open();
put("themen", dbsThemen);
}
return dbsThemen;
}
public DBStorage getWissensstand() throws Exception {
DBStorage dbsWissensstand = (DBStorage) get("wissensstand");
if (dbsWissensstand == null){
dbsWissensstand = new DBStorage();
dbsWissensstand.setDBAccess(getDBAccess());
dbsWissensstand.setAutoLinkReference(true);
dbsWissensstand.setWritebackTable("wissensstand");
dbsWissensstand.open();
put("wissensstand", dbsWissensstand);
}
return dbsWissensstand;
}
Im Screenshot-Attachment sieht man, wie durch den AutoLink Reference die Firmanummer des verantwortlichen Mitarbeiters angezeigt wird. Mein Ziel wäre jedoch der Name.
Ich habe hierzu keine API (bzw. Hilfe im Forum) gefunden, wo ich gezielt ansteuern kann, welche Spalten der referenzierten Tabelle ich nun anzeigen will. Gibt es solche überhaupt?
Bzw. gibt es die Möglichkeit die Link Reference manuell zu erstellen sowie die zugehörige "fremde" Spalte?
Prinzipiell kann ich ja eine ColumnMetadata zu den Metadata der Storage hinzufügen, so wie ich eine StorageReferenceDefinition auf der ColumnMetadata setzen kann, jedoch nicht auf der Storage.
Ich wäre dankbar wenn ich das ohne View lösen könnte, da es sich bei dem Schema um ein Fremdsystem handelt, auf welche wir nur Leserechte haben.