Как обнаружить, содержит ли класс Java поле иностранного ключа при генерации запроса на таблицу MySQL? [закрыто]JAVA

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

Сообщение Anonymous »

user.java < /h2>
// User.java
public class User {
private int userId;
private String userName;
private String userEmail;
private String userPassword;

// getters and setters
}

< /code>
post.java
// Post.java
public class Post {
private int postId;
private String postCategory;
private String postTitle;
private String post;

private int userId; // foreign key reference to User

// getters and setters
}

< /code>
Я генерирую запрос SQL, используя метод CreateTable (), как это: < /p>
public String createTable(Class users) throws IllegalAccessException {
String message = "";
String className = printClassName(users); // assumes it returns the class name

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

Field[] fields = users.getDeclaredFields();
for (int i = 0; i < fields.length; i++) {
if (fields.getType() == int.class && fields.getName().equals("userId")) {
sql.append(fields.getName()).append(" INT AUTO_INCREMENT NOT NULL");
} else if (fields.getType() == int.class) {
sql.append(fields.getName()).append(" INT NOT NULL");
} else if (fields.getType() == String.class) {
sql.append(fields.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 {
dataBaseConnection.pstmt = dataBaseConnection.conn.prepareStatement(sql.toString());
int i = dataBaseConnection.pstmt.executeUpdate();
message = (i > 0) ? "Table created with name: " + className + " successfully." : "Something went wrong.";
} catch (Exception e) {
e.printStackTrace();
}

return message;
}

< /code>
Этот подход отлично работает для простых таблиц, но теперь я хочу обнаружить и обрабатывать отношения иностранных ключей без использования аннотаций. Я знаю, что мог бы использовать аннотации (например, @foreignkey), но я явно избегаю того, что из-за обработки накладных расходов и предпочтения для решений на основе отражения. Добавить ограничения иностранного ключа в сгенерированную SQL?
Было бы полезным>

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

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

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

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

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

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

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