У меня проблема с тем, что мой Hibernate делает предположения о том, что вызывать столбцы.Hibernate отключает поведение по умолчанию
В частности, когда я делаю поле @ManyToOne, где я ссылаюсь на столбец в другой таблице. Что происходит, так это то, что если я не вношу аннотацию @JoinColumn, он отображает поле с подчеркиванием в его имени.
Например, у меня есть этот класс:
@Entity
public class User extends AbstractEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
private String username;
private String password;
@OneToMany(fetch = FetchType.LAZY, mappedBy = "userFK")
private List<TwitterAccount> twitterAccounts;
/* GETTERS & SETTERS OMITTED */
}
И тогда у меня есть класс TwitterAccount:
@Entity
public class TwitterAccount extends AbstractEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@ManyToOne(fetch = FetchType.LAZY)
private User userFK;
}
Что происходит, что, когда он пытается получить Twitter счета для определенного пользователя , Я получаю исключение: MySQLSyntaxErrorException: Unknown column 'twitteracc1_.userFK_id' in 'field list'
Посмотрите, что он пытается сопоставить userFK с: userFK_id
. Конечно, этого не существует! Я не назвал это имя.
Итак, вопрос сводится к: Можно ли отключить эту функцию? (Функциональность, которая превращает имя столбца в поле «field_'foreignkey»)
Я знаю, что с помощью @JoinColumn(name = "userFK")
это решило бы, но вместо этого я предпочел бы отключить его.
С уважением
Привет, да, я знаю об этом. Но если единственное решение - написать собственную реализацию NamingStrategy, я бы предпочел оставить это. Еще раз спасибо! –