PHP будет работать только с расширением файла .php
.
Если вы находитесь в Apache, вы также можете установить в своем httpd.conf
файле расширения для PHP. Вам нужно найти строку:
AddType application/x-httpd-php .php .html
^^^^^
и добавить количество расширений, которые должны быть прочитаны с помощью интерпретатора PHP, как вы хотите.
Мой вопрос заключается в том, существует ли простой способ заставить Hibernate просто игнорировать вставки, которые фактически вставляют дубликаты?
Как Hibernate мог знать, что запись имеет неуникальное значение без фактической вставки записи?
Если вы выполняете пакетную вставку и не хотите откатить всю транзакцию и отменить сеанс в случае ConstraintViolationException
(это то, что вы должны делать в теории после исключения, см. это нить и этот предыдущий ответ ), я бы предложил использовать API StatelessSession
и поймать ConstraintViolationException
.
, даже если вы поймаете исключение, могут быть другие проблемы
try{
session.save(O);
session.getTransaction().commit();
}catch (HibernateException e) {
System.out.println("you are carched ¤#%SD¤") ;
}
Как и сказал Паскаль, Hibernate не узнает, является ли это дубликатом, пока он не будет фактически введен.
Я уже сталкивался с подобной ситуацией раньше; несколько потоков выполняли вставки в БД, но некоторые из них могли быть дубликатами. Все, что я сделал, - это поймал и аккуратно восстановился, когда было выброшено одно из этих исключений.
Hibernate не может этого сделать. Однако вы можете сделать это сами. По сути, есть два варианта:
Первый имеет тот недостаток, что вы проверяете дубликаты на каждой вставке, когда вероятность того, что дубликат действительно существует, может быть низкой. Последний будет быстрее в обычном случае, когда дубликаты не возникают, но имеет тот недостаток, что вам нужно проверять дубликаты после лица. Когда генерируется ConstraintViolationException, он делает недействительным текущий сеанс; это означает, что вам нужно будет выполнить промывку перед поиском дубликата.
Проверка дубликатов перед вставкой, вероятно, является самым чистым подходом, если нет серьезной проблемы с производительностью, о которой вам нужно беспокоиться. Убедитесь, что вы выполняете поиск и вставляете транзакцию, чтобы гарантировать, что кто-то не добавит дубликат между поиском и вставкой, иначе вы получите ConstraintViolationException.
Вместо использования createQuery () в спящем режиме используйте createSQLQuery () и попробуйте запрос типа «REPLACE INTO method (id) VALUES (123);»