2016-09-29 135 views
1

時忽略休眠實體子類中我有這樣如何堅持

@Entity 
public class Car{ 
    @Column protected String name; 
} 

一切簡單的實體類是確定的,但現在我想用子類或匿名類此實體。

public class TestCar extends Car{ 
    TestCar(){ this.name = "Test"; } 
} 

void foo(){ 
    Car c = new Car(){ 
      { this.name = "Lone"; } 
      }; 
    // ... 
} 

這些子類是隻爲實例的目的,並且可以通過休眠完全忽略。

但是當我嘗試保存實體時,我得到一個「未知實體」-Exception。

有沒有辦法讓休眠忽略這樣的子類?

編輯:這將是很好,如果我們能找到問題的答案。討論所有其他(衆所周知的)模式是沒有幫助的(至少不是我)。你應該看到,這只是一個非常簡單的例子來澄清問題。 (也許你應該忽略的用例)

剛剛發現這個可能重複的(還沒有解決):How to persist an entity from an non-entity subclass in Hibernate

+0

你可以嘗試將它轉換爲超類,但我懷疑它會工作 - 只是從來沒有測試過它。 爲什麼不能簡單地創建'Car'來保存子類呢? – Antoniossss

+0

鑄造不起作用。我唯一的解決方案是將所有屬性全部複製到一個新的「普通」汽車對象中,但這非常不方便。 – Marcel

+0

這就是我所提到的。創建工廠方法,它會變得方便和簡單。 – Antoniossss

回答

0

這是行不通的。

恕我直言,你應該重新考慮你的設計。是真的TestCar或匿名車類車的一個子類?我認爲你正在使用錯誤的工具來創建實例。你可以使用Builder模式。