Automatische Referenzen bei Tabellen?
Posted: Wed Jan 25, 2012 12:26 pm
Hallo, liebe JVx-Community! Mein Name ist Mihail Ivanchev, Software-Entwickler aus Berlin, ich habe vor 2 Monaten JVx entdeckt und schreibe nun mein erstens Projekt damit. Das Framework ist zweifellos das beste, was ich bisher gesehen habe, total intuitiv und einfach zu benutzen. Für 1-Man-Armies bestens geeignet. Vielen Dank und viel Erfolg weiterhin!!
So, mein Problem ist, dass JVx bei der Darstellung von Tabellen automatisch den Foreign Keys folgt und, so schneint es mir, die erste String-Spalte aus der referenzentiereten Tabelle nimmt. Hier ist ein Ausschnitt aus meiner MySQL-DB:
Hier ist mein Code:
Und hier ist das Ergebnis:
http://i.imgur.com/VkoLb.png
Wie man sieht wurde ROLE_ID durch Name ersetzt. Dies ist zwar gut, ich will aber die "printable_name"-Spalten benutzen und das Label auf "System role" ändern wollen. Wie kann ich das erreichen?
Danke im Voraus!
EDIT:
Ich habe soeben das versucht:
mit dem Ergebnis "ROLE_NAME not found in meta data". Ich würde erwarten, dass dies automatisch geschieht. Was mache ich denn falsch bzw. was kann ich machen?
So, mein Problem ist, dass JVx bei der Darstellung von Tabellen automatisch den Foreign Keys folgt und, so schneint es mir, die erste String-Spalte aus der referenzentiereten Tabelle nimmt. Hier ist ein Ausschnitt aus meiner MySQL-DB:
- Code: Select all
CREATE TABLE UserRoles
(
id INTEGER AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(20) NOT NULL UNIQUE,
printable_name VARCHAR(40) NOT NULL,
description VARCHAR(255)
);
INSERT INTO UserRoles (name, printable_name) VALUES
('admin', 'Administrator'),
('surveyor', 'Property surveyor'),
('reviewer', 'Property reviewer'),
('associate', 'Company associate');
CREATE TABLE Users
(
id INTEGER AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(255) NOT NULL UNIQUE,
password VARCHAR(255) NOT NULL,
change_password CHAR(1) DEFAULT 'N',
valid_from TIMESTAMP,
valid_to TIMESTAMP,
active CHAR(1) DEFAULT 'Y',
first_name VARCHAR(40),
last_name VARCHAR(40),
email VARCHAR(255),
phone VARCHAR(30),
role_id INTEGER NOT NULL,
company_id INTEGER,
CONSTRAINT FOREIGN KEY (role_id) REFERENCES UserRoles(id),
CONSTRAINT FOREIGN KEY (company_id) REFERENCES Companies(id)
);
Hier ist mein Code:
- Code: Select all
dataSource = new RemoteDataSource();
dataSource.setConnection(connection);
dataSource.open();
rdbUsers = new RemoteDataBook();
rdbUsers.setDataSource(dataSource);
rdbUsers.setName("users");
rdbUsers.open();
Und hier ist das Ergebnis:
http://i.imgur.com/VkoLb.png
Wie man sieht wurde ROLE_ID durch Name ersetzt. Dies ist zwar gut, ich will aber die "printable_name"-Spalten benutzen und das Label auf "System role" ändern wollen. Wie kann ich das erreichen?
Danke im Voraus!
EDIT:
Ich habe soeben das versucht:
- Code: Select all
public DBStorage getUsers() throws Exception {
DBStorage dbsUsers = (DBStorage) get("users");
if (dbsUsers == null) {
dbsUsers = new DBStorage();
dbsUsers.setDBAccess(getDBAccess());
dbsUsers.setFromClause("Users");
dbsUsers.setWritebackTable("Users");
dbsUsers.setAutoLinkReference(false);
dbsUsers.open();
dbsUsers.setAutoLinkReference(true);
dbsUsers.createAutomaticLinkReference(new String[] {"ROLE_ID", "ROLE_NAME"},
"userroles",
new String[] { "ID", "PRINTABLE_NAME" });
put("users", dbsUsers);
}
return dbsUsers;
}
mit dem Ergebnis "ROLE_NAME not found in meta data". Ich würde erwarten, dass dies automatisch geschieht. Was mache ich denn falsch bzw. was kann ich machen?