使用Spring Data JPA进行Sping Boot 。Postgres DB.一般实体:
@Entity @Table class Entity { @Id @GeneratedValue private int id; }
当我尝试使用指定的id值创建一个条目时,结果我看到它被忽略并由@GeneratedValue生成。如何克服这一点?
id
@GeneratedValue
vlju58qv1#
发布解决方案,我在对整个持久化过程进行调试后来到这里(并不是说这是正确的方法,但我确实没有发现任何“也许我配置错了”的地方):
public class MyGenerator extends SequenceStyleGenerator { @Override public Serializable generate(SharedSessionContractImplementor session, Object object) throws HibernateException { return Optional.of(object) .filter(Entity.class::isInstance) .map(Entity.class::cast) .map(Entity::getId) .filter(i -> i > 0) .map(Serializable.class::cast) .orElseGet(() -> super.generate(session, object)); } )
和实体:
@Entity class Entity implements Serializable { @GenericGenerator(name = "myGenerator", strategy = "org.a.b.c.generators.MyGenerator") @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "myGenerator") private Integer id; }
1条答案
按热度按时间vlju58qv1#
发布解决方案,我在对整个持久化过程进行调试后来到这里(并不是说这是正确的方法,但我确实没有发现任何“也许我配置错了”的地方):
和实体: