В принципе, я хочу сделать JPA-сохранялось поле в моей Сущности вести себя, как это преходяще на ручной сериализацииJPA и поведение Сериализация
У меня есть базовый класс, как это:
@Entity
public class Foo implements Serializable{
@Id
@GeneratedValue(strategy=GenerationType.TABLE)
long id;
String field;
get/set field;
}
На сериализации id также сериализуется. Когда я десериализую этот класс и сохраняю его, он по-прежнему имеет тот же идентификатор и (после слияния с JPA) тот же экземпляр в базе данных. Хотя это, вероятно, предполагаемое поведение, я хочу, чтобы десериализованный объект был новым объектом в базе данных при десериализации.
Я попытался сделать идентификатор переходным, но это испортило JPA. Вторая вещь, которую я пробовал, заключалась в том, чтобы установить id на нуль после десериализации. После этого упорные работы. Но это становится довольно утомительным со многими разными Существами, и я возвращаюсь к своему оригинальному Вопросу.
Есть ли более простой способ? переопределение метода readObject(...)
и установка id в значение null не работают, поскольку JPA также использует эти методы.
Это было бы хорошо, но он говорит, 'Entity класс [.. .] не имеет первичного ключа. – Simiil
. Тогда вы не задали тип доступа и аннотации по полям. Вы не можете смешивать аннотации по свойствам и полям или некоторые игнорируются, если вы не используете аннотацию Access в JPA 2, чтобы определить ее и переопределить для некоторых сопоставлений. Упростить, чтобы они соответствовали вашим свойствам, хотя – Chris