相关疑难解决方法(0)

EclipseLink和序列生成器预分配

我有一个问题我无法理解.在休眠中,我对以下内容没有任何问题:

@GeneratedValue( strategy = GenerationType.AUTO, generator = "email-seq-gen" )
@SequenceGenerator( name="email-seq-gen", sequenceName="EMAIL_SEQ_GEN", allocationSize=500 )
Run Code Online (Sandbox Code Playgroud)

然后在我的schema.ddl中我有这个:

CREATE SEQUENCE EMAIL_SEQ_GEN START 1 INCREMENT 500;
Run Code Online (Sandbox Code Playgroud)

在这里看不多.一切都按预期工作.但是,如果我将提供程序切换到EclipseLink,我会收到此错误:

The sequence named [EMAIL_SEQ_GEN] is setup incorrectly.  Its increment does not match its pre-allocation size.
Run Code Online (Sandbox Code Playgroud)

所以当然我谷歌周围看到一些关于EclipseLink创建负数的事情,如果初始值是1并且它应该等于allocationSize.

所以,好吧,所以添加"initialValue = 500"并将我的DDL脚本更新为"START 500"修复了这个问题,但现在我的编号从500开始而不是1.什么给出了?这是一个EclipseLink错误还是我不理解的东西.我想生成从1开始并具有调整到实体的分配大小的序列(在本例中为500).我如何使用EclipseLink执行此操作?

谢谢!

另一种问这个问题的方法是......给出这个DDL:

CREATE SEQUENCE EMAIL_SEQ_GEN START 1 INCREMENT 500;
Run Code Online (Sandbox Code Playgroud)

注释我的实体与EclipseLink一起使用它的正确方法是什么?

如果我让EclipseLink生成我的DDL,那么:

@GeneratedValue( strategy = GenerationType.AUTO, generator = "email-seq-gen" )
@SequenceGenerator( name="email-seq-gen", sequenceName="EMAIL_SEQ_GEN", initialValue=1, allocationSize=500 )
Run Code Online (Sandbox Code Playgroud)

会产生这个:

CREATE SEQUENCE EMAIL_SEQ_GEN INCREMENT BY 500 START WITH 500;
Run Code Online (Sandbox Code Playgroud)

哪种意味着使用EclipseLink创建一个"START WITH …

hibernate jpa eclipselink

15
推荐指数
1
解决办法
1万
查看次数

Hibernate + MySQL简单批量插入速度极慢

我正在将来自Hibernate的2500条记录插入到一​​个完全空的MySQL表中.插件需要5分钟!

我用谷歌搜索了几个小时,尝试了一些像自动生成的主键,但似乎没有什么能改善性能.

我的程序的早期版本是同时进行插入(每个线程1个,大约100个线程),这需要大约2分钟.我认为批处理应该可以将性能提高大约10倍,但它似乎已经适得其反.

我正在使用Google Cloud的MySQLdb-f1-micro实例

这是我的表看起来像(只有数据库中的表!):

CREATE TABLE `categories` (
`browse_node` varchar(60) NOT NULL,
`name` varchar(60) DEFAULT NULL,
`path` varchar(400) DEFAULT NULL,
`url` varchar(200) NOT NULL,
`level` int(11) NOT NULL,
PRIMARY KEY (`browse_node`)
)
Run Code Online (Sandbox Code Playgroud)

这是POJO:

package example.com;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

/**
 * Represents a category from the categories table
 */
@Entity
@Table(name = "categories")
public class Category {

    @Id
    @Column(name = "browse_node")
    private String browseNode;
    @Column(name = "name")
    private String name;
    @Column(name …
Run Code Online (Sandbox Code Playgroud)

java mysql orm hibernate

0
推荐指数
1
解决办法
1149
查看次数

标签 统计

hibernate ×2

eclipselink ×1

java ×1

jpa ×1

mysql ×1

orm ×1