当前位置: 首页 > 知识库问答 >
问题:

如何手工实现JPA关系

陶元凯
2023-03-14

我使用的是JPA注释,当我在ManyToOne中看到我的实体时,joinColumn总是具有null值。

  @Entity
  @Table(name = "PC_PRODUCT")

  public class Product extends LaunchEntity {

  private static final long serialVersionUID = 1L;

  @XmlElement(name = "Product_Name", required = true)
  protected String productName;

  @XmlElement(name = "Product_Description")
  protected String productDescription;

  @XmlElement(name = "Product_To_Charge")
  @OneToMany(mappedBy = "product", cascade=CascadeType.MERGE)
  protected List<ChargeRelation> productToCharge;
@Entity
@Table(name="PC_CHARGE_RELATION")
public class ChargeRelation
    extends RelationEntity
{

    private static final long serialVersionUID = 1L;

    @XmlElement(name = "Charge", required = true)
    @OneToOne(cascade = CascadeType.MERGE)
    protected Charge charge;

    @XmlTransient
    @ManyToOne(cascade=CascadeType.MERGE)
    @JoinColumn(name="PRODUCT_ID")
    protected Product product;

问题是,当我在字符串中发现一个charge Relations时,这些值被插入到charge Relations表中,但带有product_id的列始终为NULL。

我已经定义了所有的setter和getter。我如何才能强制这使手册插入?谢谢

共有1个答案

督俊雅
2023-03-14

请注意,JPA提供程序在将关系保存到数据库时反映了多对一的关系状态。

但是,JAXB在XML解组过程中只填充一对多端,因此在解组之后需要手动填充多对一端。

 类似资料:
  • 问题内容: 我正在尝试使用JPA 2.0创建具有通用关系的多态实体。应该有两个表,一个事件表和一个通知表。在这些表内是彼此相关的具体实体,如下所示: 从逻辑上讲,这应该在hibernate状态下是可能的,因为在SQL中是可能的: 这就是我所拥有的: 使用此代码,我可以持久保存并获取任何Event,Notification,LoginEvent或NotificationEvent,但是当我尝试在JP

  • 问题内容: 我正在尝试使用JPA 2.0创建具有通用关系的多态实体。应该有两个表,一个事件表和一个通知表。在这些表内是彼此相关的具体实体,如下所示: 从逻辑上讲,这应该在休眠状态下是可能的,因为在SQL中是可能的: 这就是我所拥有的: 使用此代码,我可以持久保存并获取任何Event,Notification,LoginEvent或NotificationEvent,但是当我尝试在JPA 2.0元模

  • 我有两个persistenceUnits映射到两个不同的Oracle模式,这些模式是相似的,但表名不同。当我尝试部署应用程序时,我得到一个Hibernate异常“Missing table”,这似乎是Hibernate在错误的PersistenceUnit中查找表。 .ear#POIPersistenceUnit\“:org.hibernate.hibernateException:丢失表:POI

  • 我有个问题。当我有其他实体时,我不知道如何创建API。我与邮递员工作,当我做一个请求,以看到所有项目从数据库,我想收到实体也。 例如,这是我的实体:

  • 我正在使用Postgres10.8、Java8和Spring Boot2.1.9 with Data JPA来映射我的实体和我的数据库表。在我的数据库中,我对表进行了分区,并使用了继承策略。 我的结构是这样的: 我的实体: 我认为问题可能是由于将数据重定向到子表中插入的触发器引起的,而Spring data不识别它。 有办法修好吗?

  • 1)我想从缓存中获得数据,如果缓存中没有数据,那么应该从数据库中获取数据。 2)如果我点击/api/cacherefresh,控制器将刷新所有表。