1
// Super class
@MappedSuperclass
abstract class BaseModel implements Serializable{
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue
private Long id;
@Column(name = "create_time")
@Temporal(TemporalType.TIMESTAMP)
@CreationTimestamp
private Date createTime;
@Column(name = "update_time")
@Temporal(TemporalType.TIMESTAMP)
@UpdateTimestamp
private Date updateTime;
@Version
private Long version;
//getter and setter here
}
//Sub class
@Entity
@Table(name = "test")
public class Test extends BaseModel{
private String name;
@Enumerated
@Column(name = "double_z")
private X x;
public enum X{Y,Z}
//getter and setter
}
後最奇怪的事情是,當我調用該方法的EntityManager#發現似乎一切正常,但是當我調用的EntityManager#getReference超類返回NULL的屬性。@MappedSuperclass超類屬性爲空getReference
Test ref = entityManager.getReference(Test.class, 11L);
System.out.println(ref.getId()); //null(property of super class)
System.out.println(ref.getUpdateTime());//null(property of super class)
System.out.println(ref.Name());//udf(property of sub class)
Test f = entityManager.find(Test.class, 11L);
System.out.println(f.getId()); //11
System.out.println(f.getUpdateTime());//2016-11-30 16:38:29.0
System.out.println(f.Name());//udf
我該如何解決這個問題?