Кто-нибудь знает, как указать конкретное имя столбца со следующим простым примером?Как указать имена столбцов JPA?
@Entity
public class Role {
@Id
@GeneratedValue
@Column(name="id")
private final Integer id;
...
}
@Entity
public class User {
@Id
@GeneratedValue
@Column(name="id")
private final Long id;
@ElementCollection
@CollectionTable(name = "user_roles" joinColumns = { @JoinColumn(name = "user_id")})
private final Set<Role> roles;
...
}
Это удручающе результаты в таблице под названием "user_roles" и имена полей: "user_id" и "roles_id".
Почему «role_id», а не «role_id», и как я могу изменить это на «role_id»?
Для чего я использую JPA 2.0, MySQL и Hibernate. Данные, которые я хочу добавить, добавляются правильно, так что это всего лишь вопрос вкуса.
Edit:
Следующая может быть немного JPA 1.0'ish, но он работает, как требуется.
@ManyToMany
@JoinTable(name = "user_roles", joinColumns = @JoinColumn(name = "user_id"), inverseJoinColumns = @JoinColumn(name = "role_id"))
Спасибо, я тоже пробовал, но ничего не меняется. К сожалению, он по-прежнему использует «role_id». com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Неизвестный столбец «role_id» в «списке полей» – Raoul
Какую версию JPA вы используете? – Masudul
Если вы создаете схему из java-кода, чем используйте тип генерации drop-and-create или вручную удаляете таблицу. – Masudul