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

JPA-2@manytomany两个实体之间的关系(其中一个有额外的实体)

谭安翔
2023-03-14

我在这里粘贴类:

链类:

@Entity
@Table(name = "chain")
public class Chain {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id")
    private Long id;

    @NotBlank(message = "Chain name is mandatory")
    private String name;

    @Column(name = "PLANT_NAME")
    private String plantName;

    private String description;

    private String status;

    private Boolean hasPlant;

    @CreationTimestamp
    @Column(name = "creation_time")
    private LocalDateTime creationTime;

    @OneToMany(mappedBy = "camera_item")
    private List<CameraItem> cameraItems = new ArrayList<>();

    @OneToMany(mappedBy = "chain")
    Set<ConnectionPoint> connectionPoints;

相机项目类别:

@Entity
@Table(name = "camera_item")
public class CameraItem {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id")
    private Long id;

    @ManyToOne
    @JoinColumn
    private Camera camera;

    private String name;

    private Integer positionInChain;

    @ManyToMany(mappedBy = "cameraItems", fetch = FetchType.LAZY)
    private List<Chain> parentChainIds;
    

    @OneToMany(mappedBy = "cameraItem")
    Set<ConnectionPoint> connectionPoints;
@Entity
@Table(name = "connection_point")
public class ConnectionPoint {

    @Id
    private Long id;

    @Column(name = "direction")
    private String direction;

    @ManyToOne
    @JoinColumn(name = "chain")
    private Chain chain;

    @ManyToOne
    @JoinColumn(name = "camera_item")
    private CameraItem cameraItem;

共有1个答案

范甫
2023-03-14

我认为ConnectionPoint中没有问题。我认为问题是:

类中,

@OneToMany(mappedBy = "camera_item")  // One-to-Many defined here
private List<CameraItem> cameraItems = new ArrayList<>();

CameraItem类中,相应的属性定义如下:

@ManyToMany(mappedBy = "cameraItems", fetch = FetchType.LAZY) // Many-To-Many
private List<Chain> parentChainIds;
 类似资料:
  • 如何为这种多对多关系分配默认值?制作两个关联表->一个用于收件箱-关系,另一个用于发件箱-关系会更好吗?我该如何做到这一点?这个问题的其他解决方案? 任何帮助都非常感谢--非常感谢!

  • 我需要支持一个涉及以下实体的场景(使用JPA): 用户 一个用户可以有多个帐户,一个帐户可以在多个用户之间共享,这是迄今为止的标准@ManyToMany关系。 一个用户可以为每个帐户拥有一组不同的角色,一个角色可以在多个用户之间共享。 我遵循了这个实践,它解释了一种用额外列映射多对多关联的方法,但我不确定我是否得到了它。 用户实体: 账户实体: 用户帐户实体: 用户帐号: 我正在创建一个新用户并尝

  • 我正在创建医生、患者和专科三张表。患者可以有一个全科医生,但一个医生可以是许多患者的全科医生。每个医生都有自己的专长(例如神经外科医生、心脏病专家、泌尿科医生等)。当我尝试使用中间表在医生和专长之间建立多对多连接时,我会遇到一个错误“创建名为“entityManagerFactory”的bean时出错,该bean在类路径资源中定义”由特定mappedBy引用未知目标实体属性中的BeanCreati

  • 我的Spring Boot应用程序中有两个实体: 使用者JAVA 和 Role.java 我的MySql数据库 我已经排除了这个问题的getter和setter方法。 我想实现两个实体之间的多对多关系。每个用户都应该能够为自己分配多个角色 我已经在我的数据库中为这两个表创建了一个映射表。它有几排 用户id 我还创建了一个新的实体UserRole。java,如下所示: 现在我的问题是:这种构造正确吗

  • 我有一个用户实体和一个宠物实体。在用户和宠物之间没有“一个多人”、“许多人”或其他。原因是每个用户可能有数千只宠物(至少在本例中是这样)。由于我不想急于加载它(速度太慢),也不想延迟加载(导致延迟初始化异常……而且我不想使用视图中打开的过滤器),所以我在用户存储库中创建了这样一个名称的方法(原因是我想有机会只返回关系属性的子集。我不想要用户的所有宠物: <代码>getPetsForUser(最终用

  • 我有两个词A,B。在这个词中A是父词,有下面的表结构。 A1-->Acolumn 甚至我也尝试过使用普通连接。PLS让我知道我错过了什么。 我使用@query来指定query。选择a From TableA a LEFT OUTER JOIN FETCH a.tableAcollection p,其中a.tableacolum=?1和p.tablebcolumn<>p.tablebcolumn。