将一个值映射到JPA中的多个列
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将一个值映射到JPA中的多个列相关的知识,希望对你有一定的参考价值。
我从用户那里获得一个输入值并将其存储到数据库中。我用JPA写入DB。如果我需要将输入值存储到DB中的2列中,我必须使用的注释是什么?
代码如下。
我需要将用户输入(存储在Bean字段UserOrderDetails.noOfItemsSelected中)存储到DB表NoOfItemsSelected和NoOfItemsDispatched中的2列中。我应该使用什么注释?
问题是我不想为实体Bean中调度的No Of Items添加字段。
数据库表:
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.Look为@Formula的一些示例保留相同的值
@Formula("noOfItemsSelected")
private float noOfItemsDispatched;
以上是关于将一个值映射到JPA中的多个列的主要内容,如果未能解决你的问题,请参考以下文章
使用 JPA 和 Hibernate 将 Java 布尔值映射到 Oracle Number 列
如何使用 JPA/Hibernate 注释将 MySQL char(n) 列映射到实例变量?