others - 在 Spring Data 中,实现预定义ID的Persistable.isNew的首选方法

实体是Tile,用它标识地图上的坐标:


import org.springframework.data.domain.Persistable;

@Entity
class Tile implements Persistable<Tile.Coordinates> {
 @Embeddable
 public static class Coordinates implements Serializable {
 long x;
 long y;
 public Coordinates(x,y){this.x=x; this.y=y;}
 }

 @EmbeddedId Coordinates coordinates;

 private Tile(){}
 public Tile(long x,long y) {this.coordinates=new Coordinates(x,y);}

 @Override
 public boolean isNew(){
 // what is preferred implementation? 
 }
 // other code
}

Tile坐标是预定义的,因为没有坐标的Tile是无意义的。


Tile tile=new Tile(x,y);

时间:

我不认为有一种首选的方法。

return version == 1;

我相信还有其他方法可以做到。

这取决于属性是哪种ID。

首先,您需要在isNew方法中添加注解@Transient。

如果id是对象,检查id == null,如果你的id是primitive,你需要检查id == 0。

...