第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

創(chuàng)建不帶實(shí)體的彈簧存儲(chǔ)庫(kù)

創(chuàng)建不帶實(shí)體的彈簧存儲(chǔ)庫(kù)

瀟湘沐 2022-09-21 16:59:00
我想使用spring數(shù)據(jù)存儲(chǔ)庫(kù)接口來(lái)執(zhí)行本機(jī)查詢 - 我認(rèn)為這種方式是最簡(jiǎn)單的,因?yàn)閺?fù)雜性較低。但是當(dāng)擴(kuò)展接口ex。 我需要編寫 T - 我的實(shí)體,這不可用。CrudRepository<T, ID>我的本機(jī)查詢不返回任何具體實(shí)體,那么創(chuàng)建沒(méi)有實(shí)體的彈簧存儲(chǔ)庫(kù)的最佳方法是什么?
查看完整描述

4 回答

?
qq_遁去的一_1

TA貢獻(xiàn)1725條經(jīng)驗(yàn) 獲得超8個(gè)贊

CrudRepository或者不是設(shè)計(jì)為沒(méi)有一對(duì)。JpaRepository<Entity,ID>


您最好創(chuàng)建自定義存儲(chǔ)庫(kù),注入實(shí)體管理器并從那里進(jìn)行查詢:


  @Repository

  public class CustomNativeRepositoryImpl implements CustomNativeRepository {


    @Autowired

    private EntityManager entityManager;


    @Override

    public Object runNativeQuery() {

        entityManager.createNativeQuery("myNativeQuery")

         .getSingleResult();

    }

}


查看完整回答
反對(duì) 回復(fù) 2022-09-21
?
慕田峪7331174

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超13個(gè)贊

目前,JPA 中沒(méi)有創(chuàng)建僅具有本機(jī)或 JPQL/HQL 查詢(使用@Query表示法)的存儲(chǔ)庫(kù)的功能。要解決此問(wèn)題,您可以創(chuàng)建一個(gè)虛擬對(duì)象以插入到擴(kuò)展界面中,如下所示:


@Entity

public class RootEntity {

    @Id

    private Integer id;

}


@Repository

public interface Repository extends JpaRepository<RootEntity, Integer> {

}


查看完整回答
反對(duì) 回復(fù) 2022-09-21
?
幕布斯6054654

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超7個(gè)贊

這對(duì)我們有用。請(qǐng)參閱實(shí)體管理器


https://www.baeldung.com/hibernate-entitymanager


@Repository

public class MyRepository {


    @PersistenceContext

    EntityManager entityManager;


    public void doSomeQuery(){

        Query query = entityManager.createNativeQuery("SELECT foo FROM bar");

        query.getResultsList()

        ...

    }


}

順便說(shuō)一句,我不認(rèn)為這里甚至不需要@Repository注釋。


查看完整回答
反對(duì) 回復(fù) 2022-09-21
?
鳳凰求蠱

TA貢獻(xiàn)1825條經(jīng)驗(yàn) 獲得超4個(gè)贊

您可以使用 注釋您的實(shí)現(xiàn),并獲取實(shí)體管理器的實(shí)例。@Repository


public interface ProductFilterRepository {

    Page<Product> filter(FilterTO filter, Pageable pageable);

}




@Repository

@AllArgsConstructor

public class ProductFilterRepositoryImpl implements ProductFilterRepository {


    private final EntityManager em;


    @Override

    public Page<Product> filter(FilterTO filter, Pageable pageable) {

        CriteriaBuilder cb = em.getCriteriaBuilder();

        CriteriaQuery<Product> cq = cb.createQuery(Product.class);

        Root<Product> root = cq.from(Product.class);

        List<Predicate> predicates = new ArrayList<>();


        if (filter.getPriceMin() != null) {

            predicates.add(cb.ge(root.get("price"), filter.getPriceMin()));

        }

        if (filter.getPriceMax() != null) {

            predicates.add(cb.le(root.get("price"), filter.getPriceMax()));

        }

        if (filter.getBrands() != null && !filter.getBrands().isEmpty()) {

            predicates.add(root.get("brand").in(filter.getBrands()));

        }

        if (filter.getCategories() != null && !filter.getCategories().isEmpty()) {

            predicates.add(root.get("category").in(filter.getCategories()));

        }

        cq.where(predicates.toArray(new Predicate[0]));

        TypedQuery<Product> tq = em.createQuery(cq);

        tq.setMaxResults(pageable.getPageSize());

        tq.setFirstResult(pageable.getPageNumber() * pageable.getPageSize());


        CriteriaQuery<Long> countCq = cb.createQuery(Long.class);

        countCq.select(cb.count(countCq.from(Product.class)));

        countCq.where(predicates.toArray(new Predicate[0]));

        TypedQuery<Long> countTq = em.createQuery(countCq);

        Long count = countTq.getSingleResult();


        return new PageImpl<>(tq.getResultList(), pageable, count);

    }

}


查看完整回答
反對(duì) 回復(fù) 2022-09-21
  • 4 回答
  • 0 關(guān)注
  • 127 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)