我有一些與抽象超類沒有區別的類,所以不需要自己的表。我正在使用Spring Roo。如何處理與抽象超類無關的類,並且不需要表
我有一個任務超類映射到任務表,並使用Inheritance.Joined繼承模型。
import java.math.BigDecimal;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.Table;
privileged aspect Task_Roo_Jpa_Entity {
declare @type: Task: @Entity;
declare @type: Task: @Table(schema = "ADMIN_DIRECT", name = "TASK");
declare @type: Task: @Inheritance(strategy = InheritanceType.JOINED);
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "ID")
private BigDecimal Task.id;
public BigDecimal Task.getId() {
return this.id;
}
public void Task.setId(BigDecimal id) {
this.id = id;
}
}
我有一些子類不從抽象的超類不同,所以並不需要在數據庫中的專用表,而其他人從超不同,所以有專門的表格。
我可以通過在我的子類中執行此操作來獲得持久性,這與抽象類沒有區別。即創建延伸任務的子類,如下面的註釋(注意表名任務實際是超類表):
@Entity
@Table(schema = "ADMIN_DIRECT", name = "TASK")
public class ExpensesTask extends Task {
}
這依舊在任務父表的實體標有「ExpensesTask」作爲鑑別一個DTYPE列值。
所以它似乎工作,儘管Eclipse是提高的錯誤,指出
ExpensesTask" is mapped, but is not included in any persistence unit ... JPA Problem
如果我讓袋鼠接替我的工作我的「正確」的子類,那麼持久性似乎走走過場然後默默地失敗(沒有堅持,沒有出現的錯誤):
即這不起作用
@RooJavaBean
@RooToString
@RooDbManaged(automaticallyDelete = true)
@RooJpaActiveRecord(versionField = "", table = "TASK", schema = "ADMIN_DIRECT")
public class ExpensesTask extends Task {
}
import javax.persistence.Entity;
import javax.persistence.Table;
privileged aspect ExpensesTask_Roo_Jpa_Entity {
declare @type: ExpensesTask: @Entity;
declare @type: ExpensesTask: @Table(schema = "ADMIN_DIRECT", name = "TASK");
}
很想知道正確的方法來映射此當不需要將子類與抽象超類相區分時,可以使用繼承情況。
我總是可以創建一個只有「ID」字段的「ExpensesTask」表,所以Roo方法與我的其他「帶有表類的子類」一樣,但由於我有一個工作版本一些Eclipse的投訴)我不確定這是否有點「巧克力」。
謝謝......描述符定製器在這一點上超越了我。那麼你會建議不要使用ID列來創建表格來克服日食投訴? – smackenzie 2013-04-24 21:01:10