У меня есть один объект под названием «Изменить», где мне нужны изменения в журнале в базе данных, такие как вставка, обновление или удаление строк.Hibernate @ Любое использование аннотации
Так что моя таблица изменений содержит некоторые данные, и теперь я хотел бы добавить внешний ключ для записи изменений в другую таблицу, но у меня разные таблицы. Например, у меня есть таблица «Погода», «Групповой стол» ... Итак, я сделал несколько поисков, и я немного нашел о @Any аннотации. Поэтому я добавил несколько столбцов к моему изменению сущности:
@Entity
@Table(name = "CHANGE")
public class Change {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "CHANGE_ID")
private int changeId;
...
@Any(metaColumn = @Column(name = "RECORD_TABLE"))
@AnyMetaDef(idType = "int", metaType = "string",
metaValues = {
@MetaValue(targetEntity = Weather.class, value = "WEATHER"),
@MetaValue(targetEntity = Group.class, value = "GROUP"),
...
})
@JoinColumn(name="recordID")
private Object record;
@ManyToOne
@JoinColumn(name = "USER_ID")
private User user;
public Object getRecord() {
return record;
}
public void setRecord(Object record) {
this.record = record;
}
...
И мой глупый вопрос: Как я могу вставить данные в базу данных (например, иностранной ID и имя класса), и как я могу получить их?
Я боюсь, что я должен использовать различные отношения, чем (1-1, 1-М, Нью-Мексико). Я могу использовать их, когда я знаю таблицу, к которой я обращаюсь, но я могу ссылаться на несколько таблиц здесь (например, GROUP, WEATHER и т. Д.), И мне нужно определить имя таблицы и запись в ней. Поэтому я считаю, что должен использовать полиморфные отношения. Это похоже на это: http://www.jroller.com/eyallupu/entry/hibernate_the_any_annotation. Но я не знаю, как установить или получить объект Object, как я могу вызвать change.setRecord («int id, String name») ... – user2275785