Попытайтесь поместить свой JavaScript в блоке CDATA как это:
<script type="text/javascript">
<![CDATA[
// content of your Javascript goes here
]]>
</script>
, который должен заставить его передать проверку. Чтобы быть дополнительным сейфом, можно добавить комментарии JavaScript вокруг тегов CDATA для сокрытия их от более старых браузеров, кто не понимает ТЕГА CDATA:
<script type="text/javascript">
/* <![CDATA[ */
// content of your Javascript goes here
/* ]]> */
</script>
Мне удалось получить полную копию для работы, как описано в вопросе. Необходимо быстро загрузить весь график и сбросить @Id на ноль или ноль. Я обнаружил, что в Hibernate SessionFactory действительно есть методы, помогающие в этом процессе.
Другие приведенные выше рекомендации для глубоких копий, похоже, не работают. Конечно, проблема могла быть между клавиатурой и стулом. Но сейчас он работает.
Всем спасибо!
Я не совсем уверен, что обнуление идентификаторов уже управляемых объектов - хорошая идея, особенно. когда ваши объекты не имеют equals ()
, определенного как равенство идентификаторов. Реализация JPA могла иметь управляемые объекты в каком-то кэше и беситься при игре с идентификаторами объектов там.
Я считаю, что было бы безопаснее следовать ответу РК и выполнять реальное копирование объектов.
Зачем вам сделать это? Это немного похоже на взлом.
При этом Apache Commons BeanUtils содержит методы cloneBean ()
и copyProperties ()
для создания (мелких) копий объектов. Чтобы сделать полную копию, вы можете написать метод, предложенный здесь .
Если ваши объекты реализуют Serializable, вы можете использовать writeObject () и readObject () для создания глубокой копии. У нас есть иерархия объектов передачи данных и поддержка глубоких копий с помощью этого метода в абстрактном суперклассе (DTO):
/**
* Reply a deep copy of this DTO. This generic method works for any DTO subclass:
*
* Person person = new Person();
* Person copy = person.deepCopy();
*
* Note: Using Java serialization is easy, but can be expensive. Use with care.
*
* @return A deep copy of this DTO.
*/
@SuppressWarnings("unchecked")
public <T extends DTO> T deepCopy()
{
try
{
ObjectOutputStream oos = null;
ObjectInputStream ois = null;
try
{
ByteArrayOutputStream bos = new ByteArrayOutputStream();
oos = new ObjectOutputStream(bos);
oos.writeObject(this);
oos.flush();
ois = new ObjectInputStream(new ByteArrayInputStream(bos.toByteArray()));
return (T) ois.readObject();
}
finally
{
oos.close();
ois.close();
}
}
catch ( ClassNotFoundException cnfe )
{
// Impossible, since both sides deal in the same loaded classes.
return null;
}
catch ( IOException ioe )
{
// This has to be "impossible", given that oos and ois wrap a *byte array*.
return null;
}
}
(я уверен, что кто-то найдет причину, по которой могут возникать эти исключения .)
Таким же образом можно использовать другие библиотеки сериализации (например, XStream).