java - 将一个值映射到 JPA 中的多个列
问题描述
我从用户那里得到一个输入值并将其存储到数据库中。我使用 JPA 写入数据库。如果我需要将输入值存储到数据库中的 2 列中,我必须使用什么注释?
代码如下。
我需要将用户输入(存储在 Bean 字段 UserOrderDetails.noOfItemsSelected 中)存储到 DB 表 NoOfItemsSelected 和 NoOfItemsDispatched 的 2 列中。我应该使用什么注释?
问题是我不想在实体 Bean 中为 NoOfItemsDispatched 添加一个字段。
数据库表:
create table UserOrderDetails(
TransactionId varchar(255),
CreationDateTime datetime2(),
NoOfItemsSelected int,
NoOfItemsDispatched int
)
GO
我的实体 Bean:
@Entity
@Table(name="UserOrderDetails")
public class UserOrderDetails {
@Id
private String transactionId;
private Timestamp CreationDateTime;
private int noOfItemsSelected;
//Getters and Setters
}
参考控制器类:
class UserOrderCreationController {
@RequestMapping(value = "/createUserOrder", method = RequestMethod.POST)
public ResponseEntity<?> createUserOrder(@RequestBody UserOrderDetails userOrderDetails , @RequestHeader HttpHeaders headers) throws Exception{
//Some business logic to handle the user Order
dbrepository.save(UserOrderDetails);
return new ResponseEntity<UserOrderDetails>(userOrderDetails, HttpStatus.CREATED);
}
}
谢谢
解决方案
据我所知,您只需要在 DAO 层实体类中的字段上添加如下注释。如果您有相同的字段名和列名,这些注释是可选的。
由于问题将一个值声明为多个列,因此在调用 DAO.save 之前,您应该在两个字段中填充值。
@Entity
@Table(name="UserOrderDetails")
public class UserOrderDetails {
//Need to have identity generator of your wish
@Id
@Column(name = "TRANSACTION_ID")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private String transactionId;
private Timestamp CreationDateTime;
**@Column(name = "NO_OF_ITEMS_SELECTED")**
private int noOfItemsSelected;
**@Column(name = "NO_OF_ITEMS_DISP")**
private int noOfItemsDispatched;
//Getters and Setters
}
或者
或者,我们可以使用 Hibernate 的 @Formula 注释。将来自用户请求的一个字段填充到相应的字段,对于另一列,您可以使用 @Formula 保持相同的值。查找一些 @Formula 的示例
@Formula("noOfItemsSelected")
private float noOfItemsDispatched;
推荐阅读
- mysql - 将文本中的表情符号从 MySQL 复制到 SQL Server
- javascript - 量角器截图插件
- android - 无法解析符号“RoadManager”
- ios - NotificationServiceExtension 的捆绑包 ID 是 Xamarion iOS
- reactjs - 如何在反应组件之间传递身份验证
- javascript - 如何通过反应动态处理大量过滤器?
- python - 尝试使用 selenium 自动注册。遇到问题
- c++ - 找出一个数是否是素数
- postgresql - 我怎样才能在 PostgresQL 中做这样的事情?
- azure - Azure Functions 的 ARM 模板文档