有人知道如何在保存之前将按顺序生成的 id 和任何其他 属性 与 spring jpa 连接起来吗?
Someone knows how concatenate id generate by sequence and any other property with spring jpa before to save?
图像表明这是一个具有完整结构的实体
public class Entyty{
//genarate by sequence
private Long id;
//value coming from request
private String value;
//I need concatenate this value with id + value before to save in db
private String composeValue;
}
有人知道怎么做吗?
你不能用普通的 JPA 进程来做。
原因很明显:id 仅在实体保存时生成。
所以你要么让你的要求更宽松,要么手动分配 id。
如果这对您很重要,它可能仍然来自序列。
所以这里有一些可能有用的变体:
手动生成id。您可以使用正常的 SQL 查询 select 数据库中序列的下一个值,并使用它来设置任何新实体的 ID。然后,您可以使用普通 java 代码将其与另一个 属性.
连接起来
您可以只使用一个 getter 来获取 ID,另一个 属性 连接它们并 return 结果。一旦设置了 属性 和 id,getter 将 return 得到正确的结果。在那之前没那么多。
您可以使用触发器填充数据库中的字段。如果需要,您可以 select 额外字段或将其保存在数据库中。
您可以使用视图并让视图 assemble 拥有额外的字段,而不是使用触发器。如果您在 where 子句或类似子句中使用它,您可以在其上放置一个基于函数的索引。
图像表明这是一个具有完整结构的实体
public class Entyty{
//genarate by sequence
private Long id;
//value coming from request
private String value;
//I need concatenate this value with id + value before to save in db
private String composeValue;
}
有人知道怎么做吗?
你不能用普通的 JPA 进程来做。
原因很明显:id 仅在实体保存时生成。
所以你要么让你的要求更宽松,要么手动分配 id。 如果这对您很重要,它可能仍然来自序列。
所以这里有一些可能有用的变体:
手动生成id。您可以使用正常的 SQL 查询 select 数据库中序列的下一个值,并使用它来设置任何新实体的 ID。然后,您可以使用普通 java 代码将其与另一个 属性.
连接起来
您可以只使用一个 getter 来获取 ID,另一个 属性 连接它们并 return 结果。一旦设置了 属性 和 id,getter 将 return 得到正确的结果。在那之前没那么多。
您可以使用触发器填充数据库中的字段。如果需要,您可以 select 额外字段或将其保存在数据库中。
您可以使用视图并让视图 assemble 拥有额外的字段,而不是使用触发器。如果您在 where 子句或类似子句中使用它,您可以在其上放置一个基于函数的索引。