2013-10-03 72 views
2

我有一個實體叫做Change,我需要在數據庫中進行日誌更改,比如插入,更新或刪除行。Hibernate @Any註解用法

因此,我的更改表包含一些數據,現在我想添加外鍵記錄另一個表中的更改,但我有不同的表。例如,我有天氣表,組表,...所以我做了一些搜索,我發現了一些關於@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和類名),我怎麼能找回它們?

回答

0

請通過此Link

你應該關心你的實體關係(1-1或1-M或MM)

+0

恐怕我必須使用比不同的關係(1-1, 1-M,NM)。當我知道我所引用的表時,我可以使用它們,但我可以參考這裏的多個表(如GROUP,WEATHER等),並且需要標識表名和記錄。所以我認爲我必須使用多態關係。它與此類似:http://www.jroller.com/eyallupu/entry/hibernate_the_any_annotation。但我不知道如何設置或獲取對象項,我怎樣才能調用change.setRecord(「int id,String name」)... – user2275785