春季数据jpa

时间:2020-05-12 10:12:14

标签: hibernate spring-boot jpa spring-data-jpa spring-data

enter image description here

我将在请求中传递className,在实体中将像上面那样存储class Name字段。

主键值应附加我的班级名称。我们如何做到的。

我有办法 1.首先插入记录 2.使用主键值更新相同的记录。

我希望这是一个错误的方法,是否可以在单个保存调用中执行?如果没有,那么实现这一目标的有效方法是什么。

1 个答案:

答案 0 :(得分:1)

我认为您已经怀疑这不是一个好主意。但是无论如何,我强烈建议您不要实际上以这种方式存储数据,而只是以这种方式显示数据。您可以使用@PostLoad回调来做到这一点。将事件侦听器添加到您的实体:

@Entity
@EntityListeners(FooListener.class)
public class Foo {

  @Id
  @GeneratedValue
  private Long primaryId;

  private String className;
  ...
  ...
}

并实现后加载:

public class FooListener {
    @PostLoad
    public void updateClassName( Foo p ) {
        p.setClassName(p.getClassName() + "_" + p.getPrimaryId());
    }
}