如何从数据库中获取由其他属性组成的实体属性?

时间:2017-02-16 11:36:22

标签: mysql hibernate spring-mvc null spring-data-jpa

我有这个实体:

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。

非常感谢。

2 个答案:

答案 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 );

}