Tengo un problema de generar identificación de nuevas entidades, traté de:

@Id
@GeneratedValue
private Long myId;

y

@Id
@GeneratedValue(generator="increment")
@GenericGenerator(name="increment", strategy = "increment")
private Long myId;

pero en entityManager.persist puedo obtener Table "SEQUENCE" not found
En el más puro de hibernación generator class="increment" trabajado para mí muy bien.

Que DB estás usando?
H2 base de datos. generator class=»incremento» trabajó en el más puro de hibernación

OriginalEl autor bunnyjesse112 | 2012-03-28

3 Comentarios

  1. 13

    Podría definir myId como incremento automático /columna de identidad en la base de datos y anotaciones de campo correspondiente entidad de la siguiente manera:

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long myId;

    Que funciona al menos con H2 1.3.160 & Hibernate 3.6.8.

    Quiero destacar lo importante es que la columna de base de datos se define como AUTO_INCREMENT.

    OriginalEl autor Mikko Maunu

  2. 0

    Si quieres generar Identificadores que son compartidos (y única) entre múltiples objetos almacenados uso de la @TableGenerator. H2 y muchas otras bases de datos no tienen soporte interno para las secuencias para que @SequenceGenerator no funciona.

    Aquí está un ejemplo rápido para tener una única compartida/@Id a través de dos objetos:

    @Entity
    public class Class1 {
    
      //setting pkColumnValue of TableGenerator is very important ;-)
      @Id
      @TableGenerator(
          name = "guid", 
          initialValue = 0, 
          allocationSize = 10, 
          table = "GUID_SEQ", 
          pkColumnName = "GEN_KEY", 
          valueColumnName = "GEN_VALUE", 
          pkColumnValue = "GUID")
      @GeneratedValue(strategy = GenerationType.TABLE, generator = "guid")
      private long id;
    }
    
    
    @Entity
    public class Class2 {
    
      //use the same pkColumnValue 
      @Id
      @TableGenerator(
          name = "guid", 
          initialValue = 0, 
          allocationSize = 10, 
          table = "GUID_SEQ", 
          pkColumnName = "GEN_KEY", 
          valueColumnName = "GEN_VALUE", 
          pkColumnValue = "GUID")
      @GeneratedValue(strategy = GenerationType.TABLE, generator = "guid")
      private long id;
    }

    OriginalEl autor Parham

Dejar respuesta

Please enter your comment!
Please enter your name here