JPA HSQL 不从扩展 类 中获取字段
JPA HSQL does not fetch fields from extended classes
我正在向 HSQL 中插入以下数据:
INSERT INTO Consumer(id,ConsumerId,CREATEDBY,CREATEDAT,FK_Service,ConsumerType) VALUES(300,'adsgvcg-cvvce-hvchwec','sm',CURRENT_TIMESTAMP,1,'INTERNAL');
我有以下 类 从 table 读取:
Entity(name = "Consumer")
@Table(name = "Consumer")
public class Consumer extends Base {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
@Column(name = "ID")
private long id;
@Basic(optional = false)
@Column(name = "ConsumerId", nullable = false)
private String ConsumerId;
@Basic(optional = false)
@Column(name = "ConsumerType", nullable = false)
private String ConsumerType;
@Basic//(optional = false)
@Column(name = "FK_Service", nullable = true)
private String service;
//Getter Setters etc
基础 class 看起来像:
public class Base implements Serializable{
@Basic
@Column(name = "MODIFIEDBY", nullable = true)
private String ModifiedBy;
@Basic
@Column(name = "MODIFIEDAT", nullable = true)
private Timestamp ModifiedAt;
@Basic
@Column(name = "CREATEDBY", nullable = true)
private String CreatedBy;
@Basic
@Column(name = "CREATEDAT", nullable = true)
private Timestamp CreatedAt;
//Getter Setters etc
当我 运行 代码时,出现以下异常:
2015-07-25 22:21:12,875 ERROR [main] hbm2ddl.SchemaExport.? (?:?) - HHH000388: Unsuccessful: INSERT INTO Consumer(id,ConsumerId,CREATEDBY,CREATEDAT,FK_Service,ConsumerType) VALUES(300,'adsgvcg-cvvce-hvchwec','smenon2',CURRENT_TIMESTAMP,1,'INTERNAL')
2015-07-25 22:21:12,875 ERROR [main] hbm2ddl.SchemaExport.? (?:?) - user lacks privilege or object not found: CREATEDBY
然而,当我将字段从基础 class 移动到父级(消费者)class 时,此异常不再发生并且字段也被填充。
您需要在休眠中使用 inheritance strategy
在您的基本实体中,您需要添加一个注释,以便 hibernate 知道使用哪种策略。
@MappedSuperclass
或
@Inhertitance(strategy=InheritanceType.SINGLE_TABLE) 您可以使用以下策略之一:
- InheritanceType.SINGLE_TABLE
- InheritanceType.TABLE_PER_CLASS
- InheritanceType.JOINED
这 wikibook page 可能会有所帮助。
我正在向 HSQL 中插入以下数据:
INSERT INTO Consumer(id,ConsumerId,CREATEDBY,CREATEDAT,FK_Service,ConsumerType) VALUES(300,'adsgvcg-cvvce-hvchwec','sm',CURRENT_TIMESTAMP,1,'INTERNAL');
我有以下 类 从 table 读取:
Entity(name = "Consumer")
@Table(name = "Consumer")
public class Consumer extends Base {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
@Column(name = "ID")
private long id;
@Basic(optional = false)
@Column(name = "ConsumerId", nullable = false)
private String ConsumerId;
@Basic(optional = false)
@Column(name = "ConsumerType", nullable = false)
private String ConsumerType;
@Basic//(optional = false)
@Column(name = "FK_Service", nullable = true)
private String service;
//Getter Setters etc
基础 class 看起来像:
public class Base implements Serializable{
@Basic
@Column(name = "MODIFIEDBY", nullable = true)
private String ModifiedBy;
@Basic
@Column(name = "MODIFIEDAT", nullable = true)
private Timestamp ModifiedAt;
@Basic
@Column(name = "CREATEDBY", nullable = true)
private String CreatedBy;
@Basic
@Column(name = "CREATEDAT", nullable = true)
private Timestamp CreatedAt;
//Getter Setters etc
当我 运行 代码时,出现以下异常:
2015-07-25 22:21:12,875 ERROR [main] hbm2ddl.SchemaExport.? (?:?) - HHH000388: Unsuccessful: INSERT INTO Consumer(id,ConsumerId,CREATEDBY,CREATEDAT,FK_Service,ConsumerType) VALUES(300,'adsgvcg-cvvce-hvchwec','smenon2',CURRENT_TIMESTAMP,1,'INTERNAL')
2015-07-25 22:21:12,875 ERROR [main] hbm2ddl.SchemaExport.? (?:?) - user lacks privilege or object not found: CREATEDBY
然而,当我将字段从基础 class 移动到父级(消费者)class 时,此异常不再发生并且字段也被填充。
您需要在休眠中使用 inheritance strategy 在您的基本实体中,您需要添加一个注释,以便 hibernate 知道使用哪种策略。
@MappedSuperclass
或
@Inhertitance(strategy=InheritanceType.SINGLE_TABLE) 您可以使用以下策略之一:
- InheritanceType.SINGLE_TABLE
- InheritanceType.TABLE_PER_CLASS
- InheritanceType.JOINED
这 wikibook page 可能会有所帮助。