将一个值映射到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) 列映射到实例变量?

如何使用 JPA 和 Hibernate 将 MySQL JSON 列映射到 Java 实体属性

修剪 JPA 中的映射列

在 jpa 本机查询中选择特定列并映射到 pojo

将 MySQL json 列映射到 JPA 会引发错误