1
我的應用程序有超過250個表,每個表都有ID和名稱列。我試圖將我們的應用程序從hibernate 3遷移到Spring-JPA 4.3,並且使用hibernate 5+。具有多個實體查找器的常見spring jpa存儲庫
在我目前的休眠層我有(選項1):
public class DAO
{
private Session session;
public DAO(Session session)
{
this.session=session;
}
public EntityA findById(String id)
{
//implementation
return entityA;
}
public EntityB findByName(String name)
{
//implementation
return entityB;
}
public EntityC findByIdAndName(String id, String name)
{
//implementation
return entityC;
}
}
早在天我可以做更多的泛型方法如下,但是我不想,如果我要重新初始化這個類通過ID獲取10個不同的實體。
public class DAO<T>
{
public T findById(String id)
{
//implementation
return T;
}
public T findByName(String name)
{
//implementation
return T;
}
public T findByIdAndName(String id, String name)
{
//implementation
return T;
}
}
現在我怎麼能在Spring-JPA中實現這一點。所以,如果我需要通過ID獲得10個不同的實體,我不想初始化10個存儲庫,我想有一個存儲庫,我可以使用它來獲取任何我想要byId或byName或byIDAndName的實體。我可以使用JdbcTemplate輕鬆完成,但這意味着它可能無法通過JPA/Hibernate緩存機制進行跟蹤。
那麼,怎樣才能做到以下在一個JPA庫:
{
@Query("from EntityA where id=?1")
EntityA findEntityAById(String id);
@Query("from EntityB where name=?1")
EntityB findEntityBById(String name);
@Query("from EntityC where id=?1 and name=?2")
EntityC findEntityCById(String id,String name);
}
而不是Spring JPA我假設您的意思是Spring Data JPA?你不能......只需編寫你自己的實現... –