У меня есть приложение mvc spring, интегрированное с спящим режимом. У меня есть 3 pojo, которые помечены для создания таблицы спящего режима.Hibernate не создает таблицу в oracle db
- Book.java with @Table (name = "BOOKS").
- User.java с @Table (имя = "USER_TABLE")
- Role.java с @Table (имя = "ROLE_TABLE")
Я установил сессионный фабрику и все.
My hibernate.hbm2ddl.auto = create-drop
. Но и попробовал create, update
.
При запуске приложения Создана таблица BOOKS в БД. но USER_TABLE и ROLE_TABLE не создаются.
Я получаю исключение.
Когда я select * from USER_TABLE;
выход является таблица или представление не существует.
package com.ca.service.form;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.Table;
/**
* @author jamju02
*/
@Entity
@Table(name = "ROLE_TABLE")
public class Role {
private long id;
private String roleName;
private Set<User> users = new HashSet<User>();
/**
* @return the id
*/
@Id
@GeneratedValue
@Column(name = "ROLE_ID")
public long getId() {
return id;
}
/**
* @param id the id to set
*/
public void setId(long id) {
this.id = id;
}
/**
* @return the roleName
*/
public String getRoleName() {
return roleName;
}
/**
* @param roleName the roleName to set
*/
public void setRoleName(String roleName) {
this.roleName = roleName;
}
/**
* @return the users
*/
@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(
name = "USERS_ROLES_TABLE",
joinColumns = @JoinColumn(name = "ROLE_ID"),
inverseJoinColumns = @JoinColumn(name = "USER_ID")
)
public Set<User> getUsers() {
return users;
}
/**
* @param users the users to set
*/
public void setUsers(Set<User> users) {
this.users = users;
}
}
package com.ca.service.form;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.ManyToMany;
import javax.persistence.Table;
/**
* @author jamju02
*/
@Entity
@Table(name = "USER_TABLE")
public class User {
private long id;
private String username;
private String password;
private String email;
private Set<Role> roles = new HashSet<Role>();
public User(String username, String password, String email) {
this.username = username;
this.password = password;
this.email = email;
}
// public void addRole(Role role) {
// this.roles.add(role);
// }
/**
* @return the id
*/
@Id
@GeneratedValue
@Column(name = "USER_ID")
public long getId() {
return id;
}
/**
* @param id
* the id to set
*/
public void setId(long id) {
this.id = id;
}
/**
* @return the username
*/
public String getUsername() {
return username;
}
/**
* @param username
* the username to set
*/
public void setUsername(String username) {
this.username = username;
}
/**
* @return the password
*/
public String getPassword() {
return password;
}
/**
* @param password
* the password to set
*/
public void setPassword(String password) {
this.password = password;
}
/**
* @return the email
*/
public String getEmail() {
return email;
}
/**
* @param email
* the email to set
*/
public void setEmail(String email) {
this.email = email;
}
/**
* @return the roles
*/
@ManyToMany(mappedBy = "users")
public Set<Role> getRoles() {
return roles;
}
/**
* @param roles the roles to set
*/
public void setRoles(Set<Role> roles) {
this.roles = roles;
}
}
package com.ca.service.form;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name = "BOOKS")
public class Book {
@Id
@Column(name="ID")
@GeneratedValue
private Integer id;
@Column(name="BOOK_NAME")
private String bookName;
@Column(name="AUTHOR")
private String author;
@Column(name="PRICE")
private int price;
@Column(name="QTY")
private int quantity;
public Integer getId()
{return id;}
public String getBookName()
{return bookName;}
public String getAuthor()
{return author;}
public int getPrice()
{return price;}
public int getQuantity()
{return quantity;}
public void setId(Integer id)
{this.id = id;}
public void setBookName(String bookName)
{this.bookName = bookName;}
public void setAuthor(String author)
{this.author = author;}
public void setPrice(int price)
{this.price = price;}
public void setQuantity(int quantity)
{this.quantity = quantity;}
}
Посмотрите эту ссылку: http://stackoverflow.com/questions/438146/hibernate-hbm2ddl-auto-possible-values-and-what-they-do – DeepInJava
@Sanket: Моя проблема в том, что из 3-х таблиц, которые я хотите создать только таблицу книг, которая создается, когда не создаются USER_TABLE и ROLE_TABLE. Я пробовал все возможные значения для hibernate.hbm2ddl.auto. – user1834664
показать полные журналы, сгенерированные спящим режимом, я думаю, что у спящего режима возникла проблема при создании самой таблицы, поэтому создание таблицы не удалось. – Chaitanya