我有这个实体:
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
}
问题是当我从db检索我的实体并调用getIbanComplet()
方法时,结果为nullnull null null null null null null
。
我不想将其他属性存储到DB。我该如何解决这个问题?
我在Spring MVC应用程序中使用SpringDataJPA + Hibernate。
非常感谢。
答案 0 :(得分:0)
您必须先将IBAN号码拆分为每个属性。有多种方法可以做到这一点,例如,在setter方法中,创建一个新方法,在加载实体后提取这些属性,或者使用select new package.Class(),在那里你必须拆分它们,例如带子串。
答案 1 :(得分: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 );
}