我試圖創建一個以只讀方式包含對象的域對象,但能夠修改它指向的對象。在Servlet環境中使用Hibernate
所以在下面的例子中,我希望Hibernate處理填充Account和Category對象,但我不想永遠更新這些對象。不過,我可能希望更改哪個帳戶或我想要費用指向哪個類別。
換句話說,我可能希望更新費用表上的account_id或category_id,但我絕不希望更改我對Expense對象中包含的Account或Category對象所做更改的帳戶或類別表。
@Entity
@Table(name = "expense")
public class Expense {
@Id
@GeneratedValue
private long id;
private String name;
private BigDecimal amount;
@OneToOne
@JoinColumn(name = "id", referencedColumnName = "category_id")
//From table called category
private Category category;
@OneToOne
@JoinColumn(name = "id", referencedColumnName = "account_id")
//From table called account
private Account account;
我完全濫用Hibernate還是它不是正確的工具?我應該使用@SQLUpdate和@SQLInsert定義我自己的SQL嗎?
該應用程序的一般流程是標準的Web應用程序的東西。從數據庫
- 負載數據
- 堅持這些變化
由於
我在一個servlet環境中工作,所以我的休眠會話只有在我處於應用程序的dao層時纔會持續。該流程是一個標準的網絡應用程序 '從休眠加載數據 - >在窗體上顯示的東西 - >從表單獲取數據 - >將數據加載回數據庫。' 從窗體中取回後,我不一定有Hibernate最初給我的全部對象,只是零散的東西。所以我不想用這些塊覆蓋db中的完整對象。 – Josh 2010-07-28 11:40:32
啊哈!回答擴大 – Affe 2010-07-28 17:01:02
這正是我正在尋找的。對不起,花了很長時間纔回到它。謝謝! – Josh 2010-08-12 13:18:21