【发布时间】:2016-07-02 09:24:46
【问题描述】:
我有 2 节课:
@Entity
@Table(name = "user_role",uniqueConstraints = @UniqueConstraint(columnNames = {"role","username"}))
public class UserRole {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "user_role_id", unique = true, nullable = false)
private Integer userRoleId;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "username", nullable = false)
private User user;
@Column(name = "role",nullable = false, length = 45)
private String role;
和
@Entity
@Table(name = "users")
public class User {
@Column(name = "firstname", nullable = false)
private String firstName;
@Column(name = "lastname", nullable = false)
private String lastName;
@Column(name = "surname", nullable = true)
private String surName;
@Id
@Column(name = "username", unique = true, nullable = false, length = 45)
private String username;
@Column(name = "password", nullable = false, length = 60)
private String password;
@Column(name = "email", nullable = false, length = 255)
private String email;
@Column(name = "enabled", nullable = false)
private boolean enabled;
@OneToMany(fetch = FetchType.LAZY)
private Set<UserRole> userRole = new HashSet<>(0);
@OneToMany(fetch = FetchType.LAZY)
private List<AddressBook> addressBooks = new ArrayList<>(0);
@OneToMany(fetch = FetchType.LAZY)
private List<Message> messages = new ArrayList<>(0);
当我的应用第一次启动时,它会创建 3 个表:
users_user_role 与列 [users_username] [userrole_user_role_id];
用户与列[用户名] [电子邮件] [启用] [名字] [姓氏] [密码] [姓氏];
和
user_role 与列 [user_role_id] [role] [username]
当我用 UserRole 保存用户时,我有一个奇怪的错误:
2016-03-16 16:52:36.480 DEBUG 8280 --- [nio-8090-exec-9] org.hibernate.SQL : insert into users_user_role (users_username, user_role_user_role_id) values (?, ?)
2016-03-16 16:52:36.489 DEBUG 8280 --- [nio-8090-exec-9] o.h.engine.jdbc.spi.SqlExceptionHelper : could not execute statement [n/a]
org.postgresql.util.PSQLException: ERROR: column "user_role_user_role_id" of relation "users_user_role" does not exist
如果它创建了 userrole_user_role_id,为什么还要使用 user_role_user_role_id? 我该如何解决?
【问题讨论】:
-
另外,看看这个answer。
-
可能是其他问题。我想更改自动生成的列名的左侧,因为它生成“user_role ...”,但在脚本中它使用“userrole ...”