【发布时间】:2013-12-19 12:06:23
【问题描述】:
我的 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") 可以解决这个问题,但我宁愿将其关闭。
问候
【问题讨论】:
标签: java spring hibernate jpa hibernate-mapping