【发布时间】:2018-11-25 17:56:19
【问题描述】:
我正在制作简单的 spring mvc web 应用程序,并且我正在使用 hibernate 和 oracle。我有两个模型——用户和角色,我想定义它们之间的多对多关系。我看过几个教程并定义了我的模型,如下所示:
这是User类:
@Entity
@Table(name = "AppUser")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "id_sequence")
@SequenceGenerator(name = "id_sequence", sequenceName = "ID_SEQ")
@Column(name = "Id")
private int id;
@Column(name = "Username")
private String username;
@Column(name = "Password")
private String password;
@ManyToMany
(
fetch = FetchType.LAZY,
cascade = {
CascadeType.PERSIST,
CascadeType.MERGE
}
)
@JoinTable
(
name = "user_roles",
joinColumns = { @JoinColumn(name = "user_id", referencedColumnName = "id") },
inverseJoinColumns = { @JoinColumn(name = "role_id", referencedColumnName = "id") }
)
private Set<Role> roles = new HashSet<Role>(0);
//getters and setters....
}
这是Role类:
@Entity
@Table(name = "role")
public class Role {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "id_sequence")
@SequenceGenerator(name = "id_sequence", sequenceName = "ID_SEQ")
private int id;
private String role;
@ManyToMany
(
fetch = FetchType.LAZY,
cascade = {
CascadeType.PERSIST,
CascadeType.MERGE
},
mappedBy = "roles"
)
private Set<User> users;
//getters and setters....
}
当我在服务器上运行此应用程序时,我收到以下错误:
这个错误表明该表不存在,所以我感兴趣的是我应该手动创建它(我不这么认为)还是我在这里遗漏了什么?
【问题讨论】:
-
配置文件中属性
spring.jpa.hibernate.ddl-auto的值是多少?应该是update。 -
我的配置文件中有这个:
hibernate.hbm2ddl.auto=update -
尝试在表
user_roles上执行ALTER TABLE时出现错误ORA-00942: table or view does not exist,引用表或视图AppUser。也许这提供了一个线索...... -
此时我的数据库是空的,我期待从休眠中自动生成相应的表。应该先创建哪个表?
标签: java oracle hibernate spring-mvc