2017-06-21 16 views
0

這是我的問題。 我必須開發一個REST控制器,從舊數據庫中暴露數據。由於這個數據庫設計得不好(由一個較老的開發人員),一些相​​關的數據在另一個數據庫中...如何在有兩個數據源時使用hql從數據庫中獲取部分對象?

在這裏,我從第一個數據庫獲得一個用戶,但該用戶的生日存儲在第二個一。

在我們可以找到用戶出生日期的表格中,還有很多我沒有考慮過的字段,這就是爲什麼我要談論部分對象。

我hibernateConfig是這樣的:

​​

吾道是這樣的:

import com.projet.core.model.Birthdate; 
import org.springframework.stereotype.Repository; 
import org.springframework.transaction.annotation.Transactional; 

import java.util.List; 


@Transactional("secondTransactionManager") 
@Repository 
public class BirthdateDao extends Dao<Birthdate>{ 
    private static final String QUERY = 
     "SELECT new Birthdate(b.idBirthdate, b.birthdate, b.registrationNumber) FROM " + "Birthdate as b"; 
    public BirthdateDao() { 
     this.persistentClass = Birthdate.class; 
    } 

    /** 
    * @return list of birthdates 
    */ 
    public List<Birthdate> getAllBirthdates() { 
     return this.entityManager.createQuery(QUERY).getResultList(); 
    } 
} 

我的實體看起來像這樣:

package com.projet.core.model; 

import javax.persistence.*; 

@Entity 
@Table(name = "donneesPersonne") 
public class Birthdate extends AEntity{ 
    @Column(nullable = false, columnDefinition = "TEXT", name = "matricule") 
    private final String registrationNumber; 
    @Column(columnDefinition = "TEXT", name = "dateNaissance") 
    private final String birthdate; 
    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    @Column(name = "idDonneePersonne") 
    private final Long idBirthdate; 

    public Birthdate(final Long idBirthdate, final String birthdate, final String registrationNumber) { 
     this.registrationNumber = registrationNumber; 
     this.birthdate = birthdate; 
     this.idBirthdate = idBirthdate; 
    } 

    public String getRegistrationNumber() { 
     return this.registrationNumber; 
    } 

    public String getBirthdate() { 
     return this.birthdate; 
    } 
} 

但getAllBirthdates返回一個空列表(數據庫中有超過300行)。 你能幫我找出問題在哪裏嗎?

回答

0

如果我是你,我會設計一個ETL過程來移動並停用舊的數據庫。 300行不算什麼,所以它應該比較容易。在將數據整合到單個數據庫後,可以避免這一令人頭痛的問題。

+0

我們考慮過了,但我們的第二個數據庫是加密的,所以我們沒有任何意義可以將這些數據與第一個數據庫中的數據鏈接起來,除了在我們的代碼中解密它們。 –

+0

因此,編寫一個小作業(利用相同的代碼)從第二個數據庫解密並插入主數據庫。 –

相關問題