相关疑难解决方法(0)

Hibernate JPA序列(非Id)

对于某些不是标识符/不是复合标识符一部分的列,是否可以使用DB序列?

我正在使用hibernate作为jpa提供程序,并且我有一个表有一些生成值的列(使用序列),尽管它们不是标识符的一部分.

我想要的是使用序列为实体创建一个新值,其中序列的列不是主键的一部分:

@Entity
@Table(name = "MyTable")
public class MyEntity {

    //...
    @Id //... etc
    public Long getId() {
        return id;
    }

   //note NO @Id here! but this doesn't work...
    @GeneratedValue(strategy = GenerationType.AUTO, generator = "myGen")
    @SequenceGenerator(name = "myGen", sequenceName = "MY_SEQUENCE")
    @Column(name = "SEQ_VAL", unique = false, nullable = false, insertable = true, updatable = true)
    public Long getMySequencedValue(){
      return myVal;
    }

}
Run Code Online (Sandbox Code Playgroud)

然后,当我这样做:

em.persist(new MyEntity());
Run Code Online (Sandbox Code Playgroud)

将生成id,但该mySequenceVal属性也将由我的JPA提供程序生成.

只是为了说清楚:我希望HibernatemySequencedValue属性生成值.我知道Hibernate可以处理数据库生成的值,但是我不想使用触发器或除Hibernate之外的任何其他东西来为我的属性生成值.如果Hibernate可以为主键生成值,为什么它不能为简单属性生成?

java hibernate jpa sequence

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

如何使用hibernate生成自定义标识,同时它必须是表的主键

这是我的pojo课程

@Entity

public class Department {


@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)

@Column(name="Department_Id")

private Integer deptId;


@Column(name="Department_Name",unique=true,nullable=false)
private String deptName;


@Column(name="Department_Description")
@NotNull
private String deptDesc;
   //geters and setters
Run Code Online (Sandbox Code Playgroud)

我想要的是department_id必须是此Department表的主键,此键的条目必须为DEP0001,DEP0002,DEP0003

hibernate jpa

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

JPA是否有类似于hibernates的'@GeneGenerator'来生成自定义ID?

我正在尝试创建一种自定义的计算方式,并传递遵循我自己的模式的唯一ID.

Hibernate具有@GenericGenerator注释,允许您映射自定义类以计算唯一ID并将其分配回@Id列.

  @Id 
  @GeneratedValue(generator="MyIdGenerator")
  @GenericGenerator(name="MyIdGenerator", strategy="com.test.MyIdGenerator")
Run Code Online (Sandbox Code Playgroud)

问题是我不想在包级别使用(休眠)@GenericGenerator.这可能是"纯粹的"JPA/2吗?

谢谢你的时间.

jpa jpa-2.0

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

onSave()(用于使用Hibernate/Spring Data Repositories保存的任何实体)

如果我的实体已计算字段应在保存到数据库之前更新(db insertupdate)如何在Hibernate或Spring Data Repository之前挂钩方法调用save()

java spring hibernate spring-data

8
推荐指数
1
解决办法
6753
查看次数

自动装配不在@Entity类中工作

我有一个名为Menu的类,注释为@Entity,我需要在名为GestoreMessaggi的类中使用一个方法

....    
@Component
@Entity
@Table(name="menu")
public class Menu implements Serializable{

@Autowired
@Transient // because i dont' save this field on the DB
private GestoreMessaggi gestoreMessaggi;
.....
public void setCurrentLanguage(){

   /* I got the error both if use gestoreMessaggi
   this way and if I use the autowired istance of GestoreMessaggi*/
   GestoreMessaggi gestoreMessaggi = new GestoreMessaggi();  
   gestoreMessaggi.gest();        
}
.....
Run Code Online (Sandbox Code Playgroud)

这是GestoreMessaggi类的相关代码

 @Component
    public class GestoreMessaggi {    
        @Autowired 
        private ReloadableResourceBundleMessageSource messageSource;

        public void gest(){
        messageSource.doSomething() <--- here messageSource …
Run Code Online (Sandbox Code Playgroud)

java spring spring-mvc

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

标签 统计

hibernate ×3

java ×3

jpa ×3

spring ×2

jpa-2.0 ×1

sequence ×1

spring-data ×1

spring-mvc ×1