我一直在hibernate中使用Spring数据,我想知道避免代码浪费的最佳类组织是什么。这是我的实际结构:
public interface FleetRepository extends JpaRepository<Fleet, Integer> {
}
然后我使用这个接口
public interface FleetServices {
//Create one row into Fleet table, if id already exists this method executes an update
public Fleet create(Fleet fleet);
//Check if a fleet with given id already exists
public boolean exists(int id);
}
因此我实现了它
@Service
public class FleetServicesImpl implements FleetServices{
@Resource
private FleetRepository fleetRepository;
@Override
@Transactional
public Fleet create(Fleet fleet) {
return fleetRepository.save(fleet);
}
@Override
@Transactional
public boolean exists(int id){
return fleetRepository.exists(id);
}
}
public interface GeneralRepository<T, Id extends Serializable> extends JpaRepository<T, Id> {
}
public interface GeneralServices<T,Id> {
//Create one row into T table, if id already exists this method executes an update
public T create(T object);
//Check if a row with given id already exists
public boolean exists(Id id);
//Find a row into T table by Id
public T findById(Id id);
}
public class GeneralServicesImpl<T, Id extends Serializable > implements GeneralServices<T, Id> {
@Resource
private GeneralRepository<T,Id> generalRepository;
@Override
@Transactional
public T create(T object) {
return generalRepository.save(object);
}
@Override
@Transactional
public boolean exists(Id id) {
return generalRepository.exists(id);
}
@Override
@Transactional
public T findById(Id id) {
return generalRepository.getOne(id);
}
}
@Service
public class FleetServicesImpl extends GeneralServicesImpl<Fleet, Integer> implements FleetServices {
}
@Service
公共类DatabaseServicesImpl实现DatabaseServices{
@Autowired
private FleetServices fleetServices;
@Autowired
private EcuServicesImpl ecuServices;
public DatabaseServicesImpl() {
}
@Override
public void archiveAcquisition() {
ecuServices.create(new Ecu("MM"));
Ecu ecuId=ecuServices.findById("MM");
Fleet fleet=new Fleet(ecuId,"334","2.9",170,"5+","Full","4x2","MT");
System.out.println(ecuId.getIdEcu());
fleetServices.create(fleet);
}
}但我得到了这个例外
引用Oliver Gierke(Spring Data项目负责人)的话:
最后一个异常实际上表明JPA设置有问题。“不是托管bean”意味着JPA提供者不知道的类型。如果您正在设置一个基于Spring的JPA应用程序,我建议您在LocalContainerEntityManagerFactory上配置“PackageStoscan”属性,该属性已配置到包含JPA实体的包中。或者,您也可以在persistence.xml中列出所有实体类,但这通常比较麻烦。
确保您的Spring配置设置正确,似乎并不是所有类都被Spring识别。
是否可以使用Spring数据JPA(以Hibernate作为JPA提供程序为后盾),同时直接使用Hibernate? 问题是,当我使用JpaTransactionManager时,我无法使用检索当前会话。当我切换到HibernateTransaction管理器时,JPA存储库无法提交更改。 下面是Spring上下文的部分(对于该上下文,我无法使用直接的Hibernate调用): hibernate
问题内容: 是否可以使用Spring Data JPA(由Hibernate作为JPA提供者支持)并同时直接使用Hibernate? 问题是,当我使用JpaTransactionManager时,无法使用检索当前会话。当我切换到HibernateTransaction Manager时,JPA存储库无法提交更改。 这是我的Spring上下文的一部分(在该上下文中,我无法使用直接的Hibernate
我知道SpringDataJPA使用Hibernate,但是,我有一些问题需要澄清。 > 与使用hibernate会话和HQL相比,使用@Query编写自定义查询有哪些优势? 使用SpringDataJParepository查询方法和使用HibernateHQL之间有什么性能差异吗? 我在这里看到了其他类似的问题,他们没有回答这些问题。
我有一个带有spring Boot(v2.3.3)和spring数据的spring web应用程序。我的评估表包含以下列: Id 我的用例是表中名称和地址的任何更改评估应该创建一个新行,版本以相同的id递增。 因此,基本上只有当地址或姓名更新时,才能在评估表中插入新记录。下面是一个示例: 现有记录: 例如,名称已更新为Ryan,应该有两行,如下所示: 因此,基本上,任何名称和地址的变化都应在评估表
我通过spring数据使用spring boot 1.2.5和Hibernate 4.3.10,我编写了以下代码 我想使用子图,以便在获取名为“content.search”的实体图时检索数据。这是我的密码。 当我指定此行时,它会产生如下错误。(没有此行,它可以正常工作,但不能以EAGER类型检索子图中的数据(可以稍后检索为LAZY) ,@NamedAttributeNode(value=“ite
由于我是审计新手,请让我了解以上问题。 谢谢你。