Вылетает эта ошибка и я не пойму как ее решить Объясните мне пожалуйста как это решить Как я понимаю это должно создаться три таблици. По коду объявид три юзера , обьявил и инициализировал 3 объекта игры также сделал и с тремя объектами Ролей далее инициализировал Юзеров , добавил Роли Юзеру, далее в Роли добавил Юзеров и в Гейм стат добавил Юзеров
Я старался идти от главной таблици к второстепенной, и по идее должно было сработать, помогите мне разобраться где я допустил ошибку!!!
org.hibernate.tool.schema.spi.SchemaManagementException: Unable to execute schema management to JDBC target [alter table testproj.role add column ID int4 not null]
at org.hibernate.tool.schema.internal.TargetDatabaseImpl.accept(TargetDatabaseImpl.java:59)
at org.hibernate.tool.schema.internal.SchemaMigratorImpl.applySqlString(SchemaMigratorImpl.java:431)
at org.hibernate.tool.schema.internal.SchemaMigratorImpl.applySqlStrings(SchemaMigratorImpl.java:449)
at org.hibernate.tool.schema.internal.SchemaMigratorImpl.migrateTable(SchemaMigratorImpl.java:253)
at org.hibernate.tool.schema.internal.SchemaMigratorImpl.doMigrationToTargets(SchemaMigratorImpl.java:170)
at org.hibernate.tool.schema.internal.SchemaMigratorImpl.doMigration(SchemaMigratorImpl.java:60)
at org.hibernate.tool.hbm2ddl.SchemaUpdate.execute(SchemaUpdate.java:134)
at org.hibernate.tool.hbm2ddl.SchemaUpdate.execute(SchemaUpdate.java:101)
at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:470)
at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:444)
at org.hibernate.boot.internal.MetadataImpl.buildSessionFactory(MetadataImpl.java:170)
at hibernate.pon.al.util.HibernateUtil.buildSessionFactory(HibernateUtil.java:36)
at hibernate.pon.al.util.Main.main(Main.java:18)
Caused by: org.postgresql.util.PSQLException: ERROR: column "id" of relation "role" already exists
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2422)
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2167)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:306)
at org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:441)
at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:365)
at org.postgresql.jdbc.PgStatement.executeWithFlags(PgStatement.java:307)
at org.postgresql.jdbc.PgStatement.executeCachedSql(PgStatement.java:293)
at org.postgresql.jdbc.PgStatement.executeWithFlags(PgStatement.java:270)
at org.postgresql.jdbc.PgStatement.executeUpdate(PgStatement.java:244)
at org.hibernate.tool.schema.internal.TargetDatabaseImpl.accept(TargetDatabaseImpl.java:56)
... 12 more
Exception in thread "main" java.lang.NullPointerException
at hibernate.pon.al.util.Main.main(Main.java:19)
Классы сущностей
@Entity
@Table(name = "userentity", uniqueConstraints = {
@UniqueConstraint(columnNames = "ID"),
@UniqueConstraint(columnNames = "NICKNAME")
}, schema ="testproj")
public class UserEntity implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "ID")
private Integer userID;
@Column(name = "NICKNAME", unique = true, length = 100)
private String nname;
@Column(name = "FIRSTNAME", unique = false, length = 100)
private String fname;
@Column(name = "LASTNAME", unique = false, length = 100)
private String lname;
@Column(name = "PASSWORD", unique = false, length = 100)
private String password;
@Column(name = "PASSWORDTWO", unique = false, length = 100)
private String passwordTwo;
// @Column(name = "ROLE", unique = false, length = 20)
@ManyToOne
@JoinColumn(name = "id_role")
private Role role;
@OneToMany(mappedBy="userEntity", cascade = CascadeType.ALL)
private Set<GameStat> gameStats = new HashSet<GameStat>();
@Entity
@Table(name ="role", uniqueConstraints = {@UniqueConstraint(columnNames = "ID")}, schema = "testproj")
public class Role implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "ID")
private Integer idRole;
@Column(name = "role", unique = false, nullable = false, length = 20)
private String role;
public Role(){}
public Role(String role) {
this.role = role;
}
@OneToMany(mappedBy="role", cascade = CascadeType.ALL)
private Set<UserEntity> users = new HashSet<UserEntity>();
@Entity
@Table(name="gamestat", uniqueConstraints = {@UniqueConstraint(columnNames = "game_id")},schema = "testproj")
public class GameStat implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "game_id")
private Integer gameid;
@ManyToOne
@JoinColumn(name = "user_id")
private UserEntity userEntity;
@Column(name = "vin", unique = false, nullable = false)
private int vin;
@Column(name = "lost", unique = false, nullable = false)
private int lost;
Класс где все вызываю и добавляю
SessionFactory sessionFactory =
HibernateUtil.buildSessionFactory();
Session session = sessionFactory.openSession();
session.beginTransaction();
UserEntity u_admin;
UserEntity u_manager;
UserEntity u_user;
GameStat gameStat1 = new GameStat();
gameStat1.setLost(0);
gameStat1.setVin(0);
GameStat gameStat2 = new GameStat();
gameStat2.setLost(1);
gameStat2.setVin(1);
GameStat gameStat3 = new GameStat();
gameStat3.setLost(2);
gameStat3.setVin(2);
Role admin = new Role();
admin.setRole("admin");
Role manager = new Role();
manager.setRole("manager");
Role user = new Role();
manager.setRole("user");
u_admin = new UserEntity("nickadmin", "fadmin", "ladmin", "123","123");
u_manager = new UserEntity("nickmanager", "fmanager", "lmanager", "123","123");
u_user = new UserEntity("nickuser", "fuser", "luser", "123","123");
u_admin.setRole(admin);
u_admin.getGameStats().add(gameStat1);
u_manager.setRole(manager);
u_manager.getGameStats().add(gameStat2);
u_user.setRole(user);
u_user.getGameStats().add(gameStat3);
admin.getUsers().add(u_admin);
manager.getUsers().add(u_manager);
user.getUsers().add(u_user);
gameStat1.setUserEntity(u_admin);
gameStat2.setUserEntity(u_manager);
gameStat3.setUserEntity(u_user);
session.save(admin);
session.save(manager);
session.save(user);
session.save(u_admin);
session.save(u_manager);
session.save(u_user);
session.save(gameStat1);
session.save(gameStat2);
session.save(gameStat3);
session.beginTransaction().commit();
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">org.postgresql.Driver</property>
<property name="hibernate.connection.url">jdbc:postgresql://localhost:5432/testproj</property>
<property name="hibernate.connection.password">root</property>
<property name="hibernate.connection.username">alexroot</property>
<property name="hibernate.connection.pool_size">20</property>
<property name="hibernate.dialect">org.hibernate.dialect.PostgreSQL94Dialect</property>
<property name="show_sql">true</property>
<property name="hibernate.temp.use_jdbc_metadata_defaults">false</property>
<property name="current_session_context_class">thread</property>
<property name="hibernate.hbm2ddl.auto">update</property>
<mapping package="hibernate.pon.al"/>
<mapping class="hibernate.pon.al.UserEntity"/>
<mapping class="hibernate.pon.al.Role"/>
<mapping class="hibernate.pon.al.GameStat"/>
</session-factory>
</hibernate-configuration>