日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

本文介紹了使用MariaDB 10.4和eclipselink的Java@GeneratedValue(Strategy=GenerationType.IDENTITY)的問題的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

我正在使用的Java EE開發REST Web服務:GlassFish 5.0(內部版本25)、MariaDB 10.4和eclipselink(JPA 2.1)
以下是我的代碼:

命令行表

CREATE TABLE IF NOT EXISTS `cooldb`.`commande_line` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `quantity` INT NULL,
  `discount` INT NULL,
  `dish` INT NOT NULL,
  `commande` INT NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE INDEX `id_UNIQUE` (`id` ASC),
  INDEX `fk_commande_line_dish1_idx` (`dish` ASC),
  INDEX `fk_commande_line_commande1_idx` (`commande` ASC),
  CONSTRAINT `fk_commande_line_dish1`
    FOREIGN KEY (`dish`)
    REFERENCES `cooldb`.`dish` (`id`)
    ON DELETE CASCADE
    ON UPDATE CASCADE,
  CONSTRAINT `fk_commande_line_commande1`
    FOREIGN KEY (`commande`)
    REFERENCES `cooldb`.`commande` (`id`)
    ON DELETE CASCADE
    ON UPDATE CASCADE)
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8;

Persistance.xml

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.2" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_2.xsd">
  <!-- Define Persistence Unit -->
  <persistence-unit name="my_persistence_unit" transaction-type="JTA">
    <jta-data-source>jdbc/mariadb</jta-data-source>
    <class>com.yac.model.Address</class>
    <class>com.yac.model.Commande</class>
    <class>com.yac.model.CommandeLine</class>
    <class>com.yac.model.Dish</class>
    <class>com.yac.model.Dishtype</class>
    <class>com.yac.model.Ingredient</class>
    <class>com.yac.model.Payement</class>
    <class>com.yac.model.Profil</class>
    <class>com.yac.model.Restaurant</class>
    <class>com.yac.model.Userapp</class>
    <exclude-unlisted-classes>true</exclude-unlisted-classes>
    <properties>
    </properties>
  </persistence-unit>
</persistence>

命令行實體

public class CommandeLine implements Serializable {

    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "id")
    private Integer id;
    @Column(name = "quantity")
    private Integer quantity;
    @Column(name = "discount")
    private Integer discount;
    @JoinColumn(name = "commande", referencedColumnName = "id")
    @ManyToOne(optional = false)
    private Commande commande;
    @JoinColumn(name = "dish", referencedColumnName = "id")
    @ManyToOne(optional = false)
    private Dish dish;
    //Constructor
    // Setter and Getter
}

命令行Web服務

@Stateless
@Path("commandeline")
public class CommandeLineFacadeREST extends AbstractFacade<CommandeLine> {

    @PersistenceContext(unitName = "my_persistence_unit")
    private EntityManager em;

    public CommandeLineFacadeREST() {
        super(CommandeLine.class);
    }

    @POST
    @Override
    @Consumes(MediaType.APPLICATION_JSON)
    public void create(CommandeLine entity) {
        super.create(entity);
    }

    @Override
    protected EntityManager getEntityManager() {
        return em;
    }
}

AbstractFacade

public abstract class AbstractFacade<T> {

    private Class<T> entityClass;

    public AbstractFacade(Class<T> entityClass) {
        this.entityClass = entityClass;
    }

    protected abstract EntityManager getEntityManager();

    public void create(T entity) {
        getEntityManager().persist(entity);
    }
}

問題是,當我使用Postman測試我的Web服務時,我嘗試使用POST請求插入記錄
以下是我收到的錯誤消息:

Local Exception Stack: 
Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.7.0.v20170811-d680af5): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.SQLSyntaxErrorException: (conn=158) Table 'cooldb.sequence' doesn't exist
Error Code: 1146
Call: UPDATE SEQUENCE SET SEQ_COUNT = SEQ_COUNT + ? WHERE SEQ_NAME = ?
    bind => [2 parameters bound]
Query: DataModifyQuery(name="SEQ_GEN_SEQUENCE" sql="UPDATE SEQUENCE SET SEQ_COUNT = SEQ_COUNT + ? WHERE SEQ_NAME = ?") ...

我不明白當我使用@GeneratedValue(Strategy=GenerationType.IDENTITY)時,SEQUANCE為什么會出現問題。
當我使用@GeneratedValue(Strategy=GenerationType.SEQUENCE)更改并使用以下腳本創建表時:

CREATE SEQUENCE SEQUANCE START WITH 1 INCREMENT BY 1;

通過應用中所示的解決方案:Table 'customerjpa.sequence' doesn't exist JPA
但同樣的問題

提前感謝您的幫助。

推薦答案

使用Chris注釋解決了該問題,我只需在我的Persistence.xml文件中添加以下行:

<property name="eclipselink.target-database" value="MySQL"/>

非常感謝克里斯。
因此,我的新sistence.xml文件是:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.2" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_2.xsd">
    <!-- Define Persistence Unit -->
    <persistence-unit name="my_persistence_unit" transaction-type="JTA">
        <jta-data-source>jdbc/mariadb</jta-data-source>
        <class>com.yac.model.Address</class>
        <class>com.yac.model.Commande</class>
        <class>com.yac.model.CommandeLine</class>
        <class>com.yac.model.Dish</class>
        <class>com.yac.model.Dishtype</class>
        <class>com.yac.model.Ingredient</class>
        <class>com.yac.model.Payement</class>
        <class>com.yac.model.Profil</class>
        <class>com.yac.model.Restaurant</class>
        <class>com.yac.model.Userapp</class>
        <exclude-unlisted-classes>true</exclude-unlisted-classes>
        <properties>
            <property name="eclipselink.target-database" value="MySQL"/>
        </properties>
    </persistence-unit>
</persistence>

我只是在MariaDB基于它的時候在持久化的.xml文件中指定了MySQL中的數據庫平臺,因為列表中沒有提到MariaDB。
如果還有其他建議,請不要猶豫,謝謝。

這篇關于使用MariaDB 10.4和eclipselink的Java@GeneratedValue(Strategy=GenerationType.IDENTITY)的問題的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,

分享到:
標簽:10.4 eclipselink GeneratedValue GenerationType identity Java mariadb
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定