Как определить, содержит ли класс поле внешнего ключа?JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Как определить, содержит ли класс поле внешнего ключа?

Сообщение Anonymous »

Я пытаюсь создать метод на Java для создания таблицы в базе данных MySQL. У меня есть два класса:
User.java

Код: Выделить всё

public class User {
private int userId;
private String userName;
private String userEmail;
private String userPassword;

// getters and setters
}

Post.java

Код: Выделить всё

public class Post {
private int postId;
private String postCategory;
private String postTitle;
private String post;

private int userId; // foreign key

// getters and setters
}

Код: Выделить всё

createTable()
метод

Код: Выделить всё

public String createTable(Class users) throws IllegalAccessException {
String message = "";
String className = printClassName(User.class);

StringBuilder sql = new StringBuilder("CREATE TABLE IF NOT EXISTS " + className);
sql.append("(");

// getting fields
Field[] fields = users.getDeclaredFields();
for ( int i = 0; i < fields.length; i++ ) {
if ( fields[i].getType() == int.class && fields[i].getName().equals("userId")) {
sql.append(fields[i].getName()).append(" INT AUTO_INCREMENT NOT NULL");
} else if ( fields[i].getType() == int.class ) {
sql.append(fields[i].getName()).append(" INT NOT NULL");
} else if ( fields[i].getType() == String.class ) {
sql.append(fields[i].getName()).append(" VARCHAR(255) NOT NULL");
}

if ( i < fields.length - 1 ) {
sql.append(", ");
}

if ( i == fields.length - 1 ) {
sql.append("PRIMARY KEY (").append(fields[0].getName()).append(")");
}
}

sql.append(");");
System.out.println("Executing Sql Query: "+ sql.toString());

try {
int i = 0;
dataBaseConnection.pstmt = dataBaseConnection.conn.prepareStatement(sql.toString());
i = dataBaseConnection.pstmt.executeUpdate();

if ( i > 0 ) {
message = "table created with name: " + className + " successfully...";
} else {
message = "something went wrong...";
}
} catch (Exception e) {
e.printStackTrace();
}
return message;
}
Проблема в том, как узнать, какая таблица имеет внешний ключ, а какая нет?
Этот метод отлично подходит для создания таблиц без внешнего ключа. ключи, но я не понимаю логики для ключей с внешним ключом. Я хочу создать метод createTable(), который хорошо работает для обоих типов таблиц. Я могу выполнить эту задачу, создавая аннотации, но аннотации мне не нужны, потому что каждый раз аннотацию необходимо сначала обработать. Я ищу альтернативное решение.

Подробнее здесь: https://stackoverflow.com/questions/786 ... -key-field
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»