2013-08-06 18 views
6

Sto utilizzando Spring 3.2.3, JPA 2.1, JUnit 4.11. Sto cercando di eseguire un test di junit e continuo a ricevere il tipo di schema astratto come errore sconosciuto. Qui è la mia entità (troncato per lo spazio, ha tutti i getter e setter):Il tipo di schema astratto è sconosciuto

@Entity 
@Table(name = "WEB_PROFILES") 
public class TestWebProfile implements Serializable { 
    private static final long serialVersionUID = 1L; 

@Transient 
private String forward; 

@Column(name = "ACCESS_FLAG") 
private String accessFlag; 

@Temporal(TemporalType.DATE) 
@Column(name = "ACCESS_FLAG_UPD_DATE") 
private Date accessFlagUpdDate; 

@Column(name = "ACCESS_RESET_INTERVAL") 
private BigDecimal accessResetInterval; 

@Column(name = "ACCOUNT_TYPE") 
private String accountType; 

@Column(name = "CREATED_BY") 
private String createdBy; 

@Column(name = "E_MAIL") 
private String eMail; 

@Column(name = "FAILED_LOGIN_ATTEMPTS") 
private BigDecimal failedLoginAttempts; 

@Column(name = "FIRST_NAME") 
private String firstName; 

@Temporal(TemporalType.DATE) 
@Column(name = "FROI_ACCESS_APPROVE_DENY_DATE") 
private Date froiAccessApproveDenyDate; 

@Column(name = "FROI_ACCESS_APPROVED_FLAG") 
private String froiAccessApprovedFlag; 

@Column(name = "FROI_ACCESS_REQUESTED") 
private String froiAccessRequested; 

@Column(name = "FROI_APPROVED_BY") 
private String froiApprovedBy; 

@Temporal(TemporalType.DATE) 
@Column(name = "FROI_CONFIRM_EMAIL_SENT_DATE") 
private Date froiConfirmEmailSentDate; 

@Temporal(TemporalType.DATE) 
@Column(name = "FROI_LETTER_SENT_DATE") 
private Date froiLetterSentDate; 

@Column(name = "LAST_LOGON_ADDR") 
private String lastLogonAddr; 

@Temporal(TemporalType.DATE) 
@Column(name = "LAST_LOGON_DATE") 
private Date lastLogonDate; 

@Column(name = "LAST_NAME") 
private String lastName; 

@Column(name = "LAST_UPDATED_BY") 
private String lastUpdatedBy; 

@Column(name = "LAST_UPDATED_BY_NAME") 
private String lastUpdatedByName; 

@Column(name = "LAST_UPDATED_BY_SU_ID") 
private BigDecimal lastUpdatedBySuId; 

@Temporal(TemporalType.DATE) 
@Column(name = "MAIL_SENT_DATE") 
private Date mailSentDate; 

@Temporal(TemporalType.DATE) 
@Column(name = "MAINT_DATE") 
private Date maintDate; 

@Temporal(TemporalType.DATE) 
@Column(name = "NEW_PIN_REQ_DATE") 
private Date newPinReqDate; 

@Column(name = "PASSWORD") 
private String password; 

@Transient 
private String newPassword; 

@Temporal(TemporalType.DATE) 
@Column(name = "PASSWORD_UPD_DATE") 
private Date passwordUpdDate; 

@Column(name = "PHONE") 
private String phone; 

@Column(name = "PIN") 
private String pin; 

@Column(name = "POLICY_NUM") 
private BigDecimal policyNo; 

@Column(name = "PROFILE_CLASS_CODE") 
private String profileClassCode; 

@Temporal(TemporalType.DATE) 
@Column(name = "PROFILE_REQ_DATE") 
private Date profileReqDate; 

@Temporal(TemporalType.DATE) 
@Column(name = "PROFILE_UPDATE_DATE") 
private Date profileUpdateDate; 

@Column(name = "REMOTE_ADDR") 
private String remoteAddr; 

@Column(name = "SESSIONID") 
private String sessionid; 

@Column(name = "SUBSCRIBER_FLAG") 
private String subscriberFlag; 

@Column(name = "USER_ID") 
private BigDecimal userId; 

@Id 
@Column(name = "USER_NO") 
private BigDecimal userNo; 

@Column(name = "USERNAME") 
private String username; 

Il mio test JUnit:

@Test 
public void testGetWebProfileByUsername() { 

    TestWebProfile wp = sso.getWebProfile("MARLENE"); 
    System.out.println("name :" + wp.getFirstName()); 
    System.out.println("last name :" + wp.getLastName()); 
} 

La mia applicazione DAO:

@Override 
    public TestWebProfile getWebProfile(String username) { 
     String sqlString = "select w from TestWebProfile w where w.username =:username"; 

     return (TestWebProfile) getEntityManager() 
       .createQuery(sqlString, TestWebProfile.class) 
       .setParameter("username", username).getSingleResult(); 
    } 

Dopo Googling per l'ora passata, l'unico colpevole che ho trovato sembra avere senso non avendo le annotazioni @Id e @Column, ma ho quelle sulla variabile userNo. Qualsiasi aiuto che può essere fornito sarebbe molto apprezzato!

risposta

5

Dai un'occhiata a questo. Si dà qualche suggesstion per lo stesso caso http://java.dzone.com/tips/the-nasty-jpa-unknown-abstract

+1

Grazie a @MGPJ, ho visto questo post. Dopo averlo guardato di nuovo, ho capito il problema. Stiamo utilizzando la configurazione Java per Spring e sul bean entityManager, avevo bisogno di aggiungere un pacchetto aggiuntivo per la scansione. Una volta che l'ho fatto, ha funzionato bene. – NuAlphaMan

2

Se si utilizza Java SE è necessario aggiungere il nome completo della classe entità persistence.xml, in questo modo

<persistence-unit ...> 
    <class>your.custom.package.TestWebProfile</class> 
</persistence-unit> 

Tralasciando la parte thepackage portare al tuo errore.

Problemi correlati