Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java hibernate@Id@GeneratedValue非自动递增,我没有序列_Java_Spring_Hibernate_Spring Mvc_Jpa - Fatal编程技术网

Java hibernate@Id@GeneratedValue非自动递增,我没有序列

Java hibernate@Id@GeneratedValue非自动递增,我没有序列,java,spring,hibernate,spring-mvc,jpa,Java,Spring,Hibernate,Spring Mvc,Jpa,我有这样一种情况,即我尝试使用依赖于max id值的id持久化实体,例如,新实体id将是max(id)+1。 现在我尝试使用JPA来持久化这个实体 @Entity @Table(name = "product") public class ProductDetails { @Id @GeneratedValue private String id; 我使用了strategy=GenerationType.AUTO,strategy=GenerationType.IDE

我有这样一种情况,即我尝试使用依赖于max id值的id持久化实体,例如,新实体id将是max(id)+1。 现在我尝试使用JPA来持久化这个实体

@Entity
@Table(name = "product")
public class ProductDetails {

    @Id
    @GeneratedValue
    private String id;

我使用了
strategy=GenerationType.AUTO
strategy=GenerationType.IDENTITY
strategy=GenerationType.SEQUENCE
strategy=GenerationType.TABLE
都不起作用,所以我想我可以通过选择max id then+1来解决这个问题,并使用我想要的值(我没有尝试过),有没有办法通过JPA或Hibernate来处理这种情况。注意:id列不是自动递增的,db没有顺序。不要使用字符串作为主键。如果您需要像“ABC123”这样的id,那么需要两个id列。一个作为id(int)PK,第二个作为display_id(String)。您可以使用触发器在数据库级别自动生成显示id

不要将字符串用作主键。如果您需要像“ABC123”这样的id,那么需要两个id列。一个作为id(int)PK,第二个作为display_id(String)。您可以使用触发器在数据库级别自动生成显示id

如果使用
String
作为Id类型,则不应使用自动递增,因为String不是数字类型,因此不能递增。只需离开
@Id
并添加
@GeneratedValue(generator=“uuid”)
——这应该可以工作。
此外,您可以添加
@GenericGenerator(name=“uuid”,strategy=“uuid2”)

如果您使用
字符串作为Id类型,则不应使用自动递增,因为字符串不是数字类型,因此不能递增。只需离开
@Id
并添加
@GeneratedValue(generator=“uuid”)
——这应该可以工作。
此外,您还可以添加
@GenericGenerator(name=“uuid”,strategy=“uuid2”)

它不工作,因为它是一个字符串。如果使用Long,则
GenerationType.AUTO
应该可以正常工作@XtremeBaumer不起作用也许这一个不起作用,因为它是一个字符串。如果使用Long,则
GenerationType.AUTO
应该可以正常工作@XtremeBaumer不起作用也许这一个请理解这个问题。如果将id作为字符串,如何获得Max(id)?我理解这个问题,我不想使用Max(id),这就是另一个编写SQL的方式。我试图找出解决方案。我已将Id设置为long且strategy=GenerationType.AUTO,不起作用。请理解此问题。如果将id作为字符串,如何获得Max(id)?我理解这个问题,我不想使用Max(id),这就是另一个编写SQL的方式。我试图找出解决方案。我已经将Id设置为long,而strategy=GenerationType.AUTO不起作用