标签: sequence-generators

自弃用以来替换@SequenceGenerator

我有一个问题@SequenceGenerator:

@SequenceGenerator(name="pk_user_id", sequenceName="seq_user_id", allocationSize=1)
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="pk_user_id")
Run Code Online (Sandbox Code Playgroud)

应用程序启动时会显示警告:

WARN 7388 --- [main] org.hibernate.orm.deprecation:HHH90000014:发现使用不推荐的[org.hibernate.id.SequenceHiLoGenerator]基于序列的id生成器; 请改用org.hibernate.id.enhanced.SequenceStyleGenerator.有关详细信息,请参阅"休眠域模型映射指南"

我试图找出如何用新的代码替换已弃用的代码,但找不到任何解决方案.

java hibernate sequence-generators

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

使用@MappedSuperclass注释的类上的@SequenceGenerator

我有以下我的实体结构:

@MappedSuperclass
public abstract class BaseEntity {
  @Id @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "seqGenerator")
  private Long id;
}

@MappedSuperclass
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@SequenceGenerator(name = "seqGenerator", sequenceName = "DICTIONARY_SEQ")
public abstract class Intermed extends BaseEntity {}

@Entity
public class MyEntity1 extends Intermed {}

@Entity
public class MyEntity2 extends Intermed {}
Run Code Online (Sandbox Code Playgroud)

我得到以下例外:

    Caused by: org.springframework.beans.factory.BeanCreationException: 
Error creating bean with name 'sessionFactory' defined in class path resource [context/applicationContext.xml]: 
Invocation of init method failed; nested exception is org.hibernate.AnnotationException: Unknown Id.generator: seqGenerator
Run Code Online (Sandbox Code Playgroud)

当我在Intermed类上将@MappedSuperclass更改为@Entity时,一切正常.使用@MappedSuperclass和@SequenceGenerator有什么问题吗?或者我错过了什么?

java orm hibernate jpa sequence-generators

11
推荐指数
2
解决办法
2万
查看次数

动态生成列表中列表的元素

我有一个列表,它由以下元素组成,

list1 = [a1,a2,a3]
Run Code Online (Sandbox Code Playgroud)

此列表的每个元素本身可以是可变大小列表,例如,

a1 = [x1,y1,z1], a2 = [w2,x2,y2,z2], a3 = [p3,r3,t3,n3]
Run Code Online (Sandbox Code Playgroud)

我可以直接设置一个循环通过list1的生成器,并生成每个元素的组成部分;

array = []
for i in list1:
    for j in i:
        array.append[j]
        yield array
Run Code Online (Sandbox Code Playgroud)

但是,有没有办法这样做,所以我可以指定数组的大小?

例如 - 批量大小为2;

1st yield : [x1,y1]
2nd yield : [z1,w1]
3rd yield : [x2,y2]
4th yield : [z2,p3]
5th yield : [r3,t3]
6th yield : [n3]
7th yield : repeat 1st
Run Code Online (Sandbox Code Playgroud)

或批量大小为4;

1st yield : [x1,y1,z1,w1]
2nd yield : [x2,y2,z2,p3]
3rd yield : [r3,t3,n3]
4th yield : repeat first …
Run Code Online (Sandbox Code Playgroud)

python generator sequence-generators

9
推荐指数
2
解决办法
336
查看次数

Hibernate序列生成器的无效对象名称

我正在开发一个应用程序,通过Hibernate框架访问运行SQL Server 2012的数据库.但是,我无法弄清楚如何使SequenceGenerator注释的实例工作; 每当我尝试将新对象实例保存到数据库表时,我都会收到异常.要保存的类如下:

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;

@Entity
@Table(name="MESSAGES")
public class Message implements Serializable {

    private static final long serialVersionUID = -3535373804021266134L;

    @Id
    @Column(name="MESSAGE_ID")
    @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="MESSAGE_GEN")
    @SequenceGenerator(name="MESSAGE_GEN", sequenceName="MESSAGE_SEQ", initialValue=1, allocationSize=1) 
    private Long id;

    @Column(name="TEXT")
    private String text;

    public Message(String text) { 
        this.text = text;
    }

    public Long getId() {
        return id;
    }

    public String getText() {
        return text;
    }

}
Run Code Online (Sandbox Code Playgroud)

一个引起问题的情况可能是以下交易:

import org.hibernate.Session;

public class Manager { …
Run Code Online (Sandbox Code Playgroud)

java database hibernate sequence-generators sql-server-2012

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

用于字符序列生成器的Java库

我需要生成递增的字符序列,其中每个字符可以是不同的字母或数字范围.有谁知道这个任务的图书馆?例如:

AAA000_A0
Run Code Online (Sandbox Code Playgroud)

A是任何字母AZ,0是任意数字0-9.我也需要增加它们,例如:

AAA000_A0++ = AAA000_A1
Run Code Online (Sandbox Code Playgroud)

如果你坚持下去,它将继续这样:

AAA000_A9++ = AAA000_B0
Run Code Online (Sandbox Code Playgroud)

直到达到:

ZZZ999_Z9
Run Code Online (Sandbox Code Playgroud)

java sequence-generators

5
推荐指数
1
解决办法
920
查看次数

Hibernate @SequenceGenerator不是全局的

我有两个使用生成值的实体类

@Entity
@SequenceGenerator(allocationSize = 1, initialValue = 1000, name = "idgen")
public class Ent1 {
    @Id
    @GeneratedValue(generator = "idgen")
    private Long id;

    ...
}

@Entity
public class Ent2 {
    @Id
    @GeneratedValue(generator = "idgen")
    private Long id;

    ...
}
Run Code Online (Sandbox Code Playgroud)

问题是,如果不放线

@SequenceGenerator(allocationSize = 1, initialValue = 1000, name = "idgen")
Run Code Online (Sandbox Code Playgroud)

两个实体上我收到一个错误:

Caused by: org.hibernate.AnnotationException: Unknown Id.generator: idgen
Run Code Online (Sandbox Code Playgroud)

但JPA规范说@SequenceGenerator的范围是"全局的",可以跨实体重用.

我错过了什么?

annotations hibernate jpa sequence-generators

5
推荐指数
1
解决办法
1492
查看次数

Hibernate 序列生成器不一致

我有一个表,其促销 ID 注释为

@SequenceGenerator(name="GEN_PROMID", sequenceName="SEQ_PROMOTIONID", allocationSize=1)
@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="GEN_PROMID")
@Column(name="PROMOTIONID")
private Long promotionid;
Run Code Online (Sandbox Code Playgroud)

但即使allocationSize 被指定为1,hibernate 也会不一致地增加数字。以下是数据库中 Promotionid 的最新降序值

1440
1420
1407
1406
1405
1404
1403
1402
1401
1400
1380
1360
1342
1341
1340
1320
1305
Run Code Online (Sandbox Code Playgroud)

我在某处读到 Hibernate 可能会使用 hilo seq_hilo algotihm 和org.hibernate.id.SequenceHiLoGenerator生成器,即使@SequenceGenerator已定义。另请阅读以下链接,我们可以使用它@GenericGenerator来解决链接中的此问题

有人可以在这方面提供详细信息吗?语法@GenericGenerator看起来并不简单。该@SequenceGenerator用还是不用。有时@SequenceGenerator可以完美地工作并生成正确的主键。

附言。我正在使用 Hibernate 3.5 并使用 Oracle 11g DB

编辑

序列码-

CREATE SEQUENCE SEQ_PROMOTIONID
    INCREMENT BY 1
    START WITH 100;
Run Code Online (Sandbox Code Playgroud)

编辑2

更多分析表明,至少“总是”插入一个可被 20 整除的值。由于Oracle的序列默认缓存为20,因此看起来hibernate的正常增量与缓存值之间存在一些冲突。还观察到,当插入之间有时间间隙时,它通常会转到下一个可被 20 …

oracle hibernate hilo sequence-generators jpa-annotations

5
推荐指数
1
解决办法
2832
查看次数

从 tf.keras.utils.Sequence 构建的自定义数据生成器不适用于张量流模型的 fit api

我根据链接的指导实现了一个序列生成器对象。

import tensorflow as tf
from cv2 import imread, resize
from sklearn.utils import shuffle
from cv2 import imread, resize
import numpy as np
from tensorflow.keras import utils
import math
import keras as ks

class reader(tf.keras.utils.Sequence):

    def __init__(self, x, y, batch_size, n_class):
        self.x, self.y = x, y
        self.batch_size = batch_size
        self.n_class = n_class
        
    def __len__(self):
        return math.ceil(len(self.x) / self.batch_size)

    def __getitem__(self, idx):
        print('getitem', idx)
        batch_x = self.x[idx * self.batch_size:(idx + 1) *
        self.batch_size]
        batch_y = self.y[idx * self.batch_size:(idx + …
Run Code Online (Sandbox Code Playgroud)

python sequence-generators keras tensorflow

5
推荐指数
1
解决办法
2517
查看次数

如何使用Hibernate实现自定义字符串序列标识符生成器

我正在使用spring,h2和liquibase的hibernate,我试图通过这个博客文章的例子为我的实体创建一个自定义的String id生成器但是我收到一个错误:Caused by: org.hibernate.id.IdentifierGenerationException: Unknown integral data type for ids : java.lang.String

这是我的SequenceStyleGenerator代码:

public class CTCIDGenerator extends SequenceStyleGenerator {

    @Override
    public Serializable generate(SessionImplementor session, Object obj) {
        if (obj instanceof Identifiable) {
            Identifiable identifiable = (Identifiable) obj;
            Serializable id = identifiable.getId();
            if (id != null) {
                return id;
            }
        }
        return "CTC"+super.generate(session, obj);
    }
}
Run Code Online (Sandbox Code Playgroud)

我的实体代码:

@Entity
@Table(name = "contact")
public class Contact implements Serializable, Identifiable<String> {

    private static final long serialVersionUID = 1L;

    @Id
    @GenericGenerator(
        name …
Run Code Online (Sandbox Code Playgroud)

java database hibernate identifier sequence-generators

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

从 SequenceGenerator 获取下一个值

我想利用 SequenceGenerator 并从序列生成器中获取下一个值。我想避免前往数据库并依靠序列生成器为我提供唯一值。此外,我使用该值在显示字段中显示唯一 ID,而不保留对象。

jpa sequence-generators

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