Не обновляется запрос в Hibernate

Рейтинг: 0Ответов: 1Опубликовано: 20.11.2014

Была одна модель User, которая записывалась в БД. Потом я добавил дополнительный столбик в БД и, соответственно, расширил модель.

public class User {

    @NotEmpty(message = "Field should not be empty")
    @Size(min = 5, max = 45, message="Username have to be beetwen 5 and 45 characters long")
    @Pattern(regexp="^[a-zA-Z0-9]+$", message = "Username must be alphanumeric with no spaces")
    private String username;

    @NotEmpty(message = "Field should not be empty")
    @Size(min = 5, max = 45, message="Password have to be beetwen 5 and 45 characters long")
    @Pattern(regexp="^[a-zA-Z0-9]+$", message = "Password must be alphanumeric with no spaces")
    private String password;

    @NotEmpty(message = "Field should not be empty")
    @Email(message = "it must be the string with '@' separator")
    @Size(min = 5, max = 45, message="Email have to be beetwen 5 and 45 characters long")
    private String email;
    private String avatar;
    private boolean enabled;

    public User(){
        this.username = "";
        this.password = "";
        this.email = "";
        this.avatar = "";
        this.enabled = true;
    }

    public User(String username, String password, String email){
        this.username = username;
        this.password = password;
        this.email = email;
        this.avatar = "";
        this.enabled = true;
    }

    public User(String username, String password, String email, String avatar){
        this.username = username;
        this.password = password;
        this.email = email;
        this.avatar = avatar;
        this.enabled = true;
    }

    public boolean getEnabled(){
        return enabled;
    }
    public String getUsername(){
        return username;
    }
    public String getPassword(){
        return password;
    }
    public String getEmail(){
        return email;
    }
    public String getAvatar(){
        return avatar;
    }

    public void setUsername(String username){
        this.username = username;
    }
    public void setPassword(String password){
        this.password = password;
    }
    public void setEmail(String email){
        this.email = email;
    }
    public void setEnabled(boolean enabled){
        this.enabled = enabled;
    }
    public void setAvatar(String avatar){
        this.avatar = avatar;
    }
}

hbm файл

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
    <class name="org.springframework.web.basepackage.User" table="users">
        <id name="username" type="string">
            <column name="username" length="45" />
            <generator class="assigned" />
        </id>
        <property name="password" type="string">
            <column name="password" length="60" not-null="true" />
        </property>
        <property name="email" type="string">
            <column name="email" />
        </property>
        <property name="avatar" type="string">
            <column name="avatar" />
        </property>
        <property name="enabled" type="boolean">
            <column name="enabled" not-null="true" />
        </property>
    </class>
</hibernate-mapping>

Способ сохранения

@Autowired
    private SessionFactory sessionFactory;

    @Override
    public void saveUser(User user) {
        sessionFactory.getCurrentSession().save(user);
    }

Вот, в общем, я внес коррективы, но SQL запрос от Hibernate остался прежним и не изменяется:

Hibernate: insert into users (password, email, enabled, username) values (?, ?, ?, ?)

И кэш отключал, и dynamic-insert включал, и пробовал openSession(), запрос не меняется. В чем проблема?

Ответы

▲ 1

Знаете, можно было бы попробовать дать Hibernate самостоятельно обновить структуру базы данных.

Обновление

hibernate.hbm2ddl.auto

Automatically validates or exports schema DDL to the database when the SessionFactory is created. With create-drop, the database schema will be dropped when the SessionFactory is closed explicitly.
e.g. validate | update | create | create-drop

validate: validate the schema, makes no changes to the database.
update: update the schema.
create: creates the schema, destroying previous data.
create-drop: drop the schema at the end of the session.

Экспорт схемы данных.

Обновление

Тогда можно попробовать обновить связи (привязки). Удалить и добавить.