Hibernate удаление всех строк перед вставкой - PullRequest
2 голосов
/ 12 сентября 2010

У меня есть этот класс сущностей, первый, который я создал для тестирования Hibernate, он использует последовательность оракула для заполнения поля идентификатора:

@Entity
@Table(name="COMPANIES")
public class Companies {

                private Integer cmpid;
                private String cmpname;
                private String cmpcountry;

                public Companies() {

                }

                public Companies(String name, String country) {
                    this.cmpname = name;
                    this.cmpcountry = country;
                }
                    @Id
                    @GeneratedValue(strategy=GenerationType.SEQUENCE, generator = "gen_CMP")
                    @SequenceGenerator(name="gen_CMP", sequenceName = "CMP_ID_SEQ")
                    @Column(name="CMP_ID", nullable=false)
                    public Integer getCmpId() {
                    return this.cmpid;
                    }

                    public void setCmpId(Integer cmpid) {
                    this.cmpid = cmpid;
                    }

                    @Column(name="CMP_NAME", nullable=true)
                    public String getCmpName() {
                    return this.cmpname;
                    }

                    public void setCmpName(String cmpname) {
                    this.cmpname = cmpname;
                    }

                    @Column(name="CMP_COUNTRY", nullable=true)
                    public String getCmpCountry() {
                    return this.cmpcountry;
                    }

                    public void setCmpCountry(String cmpcountry) {
                    this.cmpcountry = cmpcountry;
                    }

}

Затем в моем тестовом модуле я создаю объект Companies, затемсохраните его в сеансе:

Companies Companies = new Companies("qqq","FR");
session.save(Companies);
transaction.commit();

Но каждый раз удаляются ВСЕ записи в таблице COMPANIES в Oracle.

Итак, когда я впервые попробовал свои данные, они были заполнены.со многими строками и с использованием этих первичных ключей в других таблицах, и он смог удалить эти строки в компаниях, а не в других таблицах ...

Таким образом, это означает, что Hibernate фактически отключил все мои ограничения, очистивтаблицу, и добавил новую строку из моего тестового блока ...

Что я делаю не так?

Я не хочу, чтобы hibernate связывался с моими данными, если я не скажу это сделать...

1 Ответ

1 голос
/ 12 сентября 2010

В вашей конфигурации hibernate вам нужно установить hbm2dll для проверки.Примерно так:

 <property name="hbm2ddl.auto">validate</property>

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

Эта страница описываетнастройка более подробно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...