У меня есть модель, которая выглядит следующим образом:Hibernate вставка вызывает обновление другой таблицы
@Entity
@Table(name = "A")
class A {
@ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinTable(name = "A_categories", joinColumns = {
@JoinColumn(name = "A_id", nullable = false, updatable = false) },
inverseJoinColumns = { @JoinColumn(name = "category_id",
nullable = false, updatable = false) })
private List<Category> categories;
}
@Entity
@Table(name = "category")
class Category {
@Id
@Column(name="id")
@GeneratedValue
private Integer id;
@Column(name = "category_name")
private String categoryName;
@ManyToMany(fetch = FetchType.LAZY, mappedBy = "categories")
private List<A> a;
}
Так что есть много-ко-многим между A
и Category
. Теперь категории являются статическими и не могут быть изменены пользователем. Из пользовательского интерфейса пользователь попытается сохранить объект A
, и каждый из них может иметь одну или несколько категорий. Таким образом, JSON, который возвращается выглядит немного как это:
{A: {categories: [{id: 1}, {id: 2}, {id: 3}]}}
Теперь, когда я пытаюсь сохранить этот A
объект (после Джексона unmarshalled на Java), я просто хочу записи должны быть сделаны в соединительной таблице, A_categories
, для каждой категории новый объект имеет.
Однако сам объект Category
также обновляется. Поэтому, если вы заметили, JSON не имеет category_name
, поэтому запись базы данных для каждого Category
также будет обновлена до записи null
для имени.
Как я могу предотвратить это?
Второе решение. Это имеет смысл удалить его. Благодаря! – starman1979