2016-11-30 58 views
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 

我该如何解决这个问题?

回答

0

使类BaseModel公开解决这个问题。