亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用spring jpa獲取數據

使用spring jpa獲取數據

MMTTMM 2023-11-01 21:57:09
我還是java和spring的初學者,我已經將表存儲在名為as的mysql中Offers,我試圖逐行獲取數據where the Status == 0,我的表看起來像:-------------+------------+------------+------------+--------------+--------+--------+--------+--------+--------------+| Msisdn      | Entry_Date | Start_Date | End_Date   | Service_Type | Status | Parm_1 | Parm_2 | Parm_3 | Process_Date |+-------------+------------+------------+------------+--------------+--------+--------+--------+--------+--------------+| 7777777777  | 2019-01-11 | 2019-02-15 | 2019-03-03 | 1            |      1 | 1      | 1      | 1      | 2019-10-15   || 7888888899  | 2019-01-11 | 2019-02-12 | 2019-03-03 | 1            |      0 | 1      | 1      | 1      | 2019-10-15   || 799999999   | 2019-01-11 | 2019-02-10 | 2019-03-03 | 1            |      0 | 1      | 1      | 1      | 2019-10-15   || 79111111111 | 2019-01-28 | 2019-02-27 | 2019-03-03 | 1            |      0 | 1      | 1      | 1      | 2019-10-15   |+-------------+------------+------------+------------+--------------+--------+--------+--------+--------當我嘗試運行我的代碼時它返回org.springframework.beans.factory.BeanCreationException:創建在類路徑資源[org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]中定義的名為“entityManagerFactory”的bean時出錯:調用init方法失敗;嵌套異常是 org.hibernate.AnnotationException:沒有為實體指定標識符:com.example.accessingdatajpa.Offers優惠信息庫package com.example.accessingdatajpa;import java.util.List;import org.springframework.data.repository.CrudRepository;public interface OffersRepository extends CrudRepository<Offers, String> {    List<Offers> findByStatus(String Status);    Offers findByMsisdn(String Msisdn);}
查看完整描述

4 回答

?
九州編程

TA貢獻1785條經驗 獲得超4個贊

我發現那里有很多錯誤:


第一名


添加@Id注釋到msisdn


@Id

@GeneratedValue(strategy=GenerationType.AUTO)

private String Msisdn;

第二名


添加@Repository注釋到OffersRepository


@Repository

public interface OffersRepository extends CrudRepository<Offers, String> {


    List<Offers> findByStatus(String Status);


    Offers findByMsisdn(String Msisdn);

}

第三名


將類型的自動裝配 bean 添加OffersRepository到您的類中,并從您的方法中AccessingDataJpaApplication刪除參數OffersRepository repositorypublic CommandLineRunner demo(OffersRepository repository)


@SpringBootApplication

public class AccessingDataJpaApplication {


    private static final Logger log = LoggerFactory.getLogger(AccessingDataJpaApplication.class);


    @Autowired

    private OffersRepository repository;


    public static void main(String[] args) {

        SpringApplication.run(AccessingDataJpaApplication.class);

    }


    @Bean

    public CommandLineRunner demo() {

        return (args) -> {


            // fetch by status =0

            log.info("Offers found with findByStatus('0'):");

            log.info("--------------------------------------------");

            repository.findByStatus("0").forEach(on -> {

                log.info(on.toString());

            });

            log.info("");

        };

    }


}

第四名


如果你想使用CommandLineRunner,你需要實現它。您可以通過非常簡單的方式完成,只需在引導類中實現即可。


AccessingDataJpaApplication.java


@SpringBootApplication

public class AccessingDataJpaApplication implements CommandLineRunner {


    @Autowired

    private OffersRepository repository;


    private static final Logger log = LoggerFactory.getLogger(AccessingDataJpaApplication.class);


    public static void main(String[] args) {

        SpringApplication.run(AccessingDataJpaApplication.class);

    }


    @Override

    public void run(String...args) {

        log.info("Offers found with findByStatus('0'):");

        log.info("--------------------------------------------");

        repository.findByStatus("0").forEach(on - >{

            log.info(on.toString());

        });

        log.info("");

    }


}


查看完整回答
反對 回復 2023-11-01
?
BIG陽

TA貢獻1859條經驗 獲得超6個贊

您缺少一個用 注釋的字段@Id。每個都@Entity需要一個@Id- 這是數據庫中的主鍵。在您的實體類上指定注釋,例如:


@Entity

@Table(name = "OFFERS")

public class Offers {


? ?@Id

? ?@GeneratedValue(strategy=GenerationType.AUTO)

? ?@Column(name = "Msisdn")

? ?private String Msisdn;


? ?@Column(name = "Entry_Date")? ?

? ?private String Entry_Date;


? ?@Column(name = "Start_Date")

? ?private String Start_Date;


? ?@Column(name = "End_Date")

? ?private String End_Date;


? ?@Column(name = "Service_Type")

? ?private String Service_Type;


? ?@Column(name = "Status")

? ?private String Status;


? ?@Column(name = "Parm_1")

? ?private String Parm_1;


? ?@Column(name = "Parm_2")

? ?private String Parm_2;


? ?@Column(name = "Parm_3")

? ?private String Parm_3;


? ?@Column(name = "Process_Date")

? ?private String Process_Date;

? ?//Setters and getters

}

如果您的列和表名稱遵循隱式命名策略,則可以不使用注釋指定表和列。


@Id 注釋的放置標記了持久性狀態訪問策略。該標識符唯一標識該表中的每一行。默認情況下,假定表的名稱與實體的名稱相同。要顯式給出表的名稱或指定有關表的其他信息,我們將使用 javax.persistence.Table 注釋。邏輯名稱可以由用戶顯式指定(例如使用 @Column 或 @Table),也可以由用戶顯式指定??梢杂?Hibernate 通過 ImplicitNamingStrategy 契約隱式確定。



查看完整回答
反對 回復 2023-11-01
?
慕虎7371278

TA貢獻1802條經驗 獲得超4個贊

Offers 沒有主鍵。您必須使用@Id注釋主鍵屬性

喜歡

@Id
private Integer id;


查看完整回答
反對 回復 2023-11-01
?
阿波羅的戰車

TA貢獻1862條經驗 獲得超6個贊

你需要這樣做:


@Id

@GeneratedValue(strategy=GenerationType.AUTO)

private String Msisdn;


查看完整回答
反對 回復 2023-11-01
  • 4 回答
  • 0 關注
  • 194 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號