2017-02-16 14 views
0

我有這樣的實體:如何從數據庫中獲取由其他屬性組成的實體屬性?

public class T_compteBancaire implements Serializable { 
@Id 
@GeneratedValue(strategy = GenerationType.IDENTITY) 
private Long     id_compteBancaire; 

@Transient 
private String     ibanCodePays; 

@Transient 
private String     ibanCleIban; 

@Transient 
private String     ibanCodeBanque; 

@Transient 
private String     ibanCodeGuichet; 

@Transient 
private String     ibanNumeroCompte1; 

@Transient 
private String     ibanNumeroCompte2; 

@Transient 
private String     ibanNumeroCompte3; 

@Transient 
private String     ibanCleRib; 

//Only this property is stored in DB 
@Column(name = "IBAN") 
private String     ibanComplet; 

public String getIbanComplet() { 
    ibanComplet = ibanCodePays + ibanCleIban + " " + ibanCodeBanque + " " + ibanCodeGuichet 
      + " " + ibanNumeroCompte1 + " " + ibanNumeroCompte2 + " " + ibanNumeroCompte3 + " " + ibanCleRib; 
    return ibanComplet; 
} 

@OneToOne 
private User    owner; 

//Other getters and setters 
} 

的問題是,當我從數據庫中檢索我的實體,並調用getIbanComplet()方法的結果是nullnull null null null null null null。 我不想將其他屬性存儲到數據庫。我該如何解決這個問題?

我在Spring MVC應用程序中使用SpringDataJPA + Hibernate。

非常感謝。

回答

0

我通過使用本機查詢解決了這個問題。 在這裏我的解決方案:

public interface TcompteBancaireRepository extends JpaRepository<T_compteBancaire, Long> { 

@Query(value = "select cb.iban from T_compteBancaire cb where cb.owner_id =?1", nativeQuery = true) 
String findIBANbyOwnerID(Long ownerID); 

} 
0

您必須首先將IBAN號碼分配給每個屬性。有多種方式可以做到這一點,例如,在setter方法中,創建一個新方法來加載實體後使用JPQL查詢提取這些屬性,或者使用select new package.Class()來分割它們,例如與子字符串。

+0

感謝您的回覆。沒有另一種魔法解決方案嗎?例如。一個只會將IBAN作爲字符串返回的SQL請求,然後使用Substring + Setter進行分割。 – akuma8

相關問題