1

我正在使用 Java EE JSP/EJB3,但在实现表之间的关系时遇到问题。

作为解释我的问题的测试示例,我想出了一个汽车模型和一个品牌关系。在此 Web 应用程序中,用户首先创建品牌。然后创造汽车,因为没有一个或多个品牌就不可能存在汽车。一个品牌可以拥有许多汽车,而汽车可以属于多个品牌。此外,我希望从 Brand 我可以访问像以下 brand.cars 这样的汽车,从 Cars 访问像 car.brands 这样的品牌。而这一切都是由 Car 驱动的,因为它是最后创建的。

我不知道上述推理是否是实现这一点的最佳方式。这个想法是能够以更少的问题访问两种方式。

public class Brand implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    @Column(name="id")
    private long id;

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

    @ManyToMany(mappedBy="cars") 
    private List<Car> cars;
}

以下是汽车实体 bean:

public class Car implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    @Column(name="id")
    private long id;

   @JoinTable(name = "CarBrand",
       joinColumns =
       @JoinColumn(name = "CAR_ID", referencedColumnName = "id"),
       inverseJoinColumns =
       @JoinColumn(name = "BRAND_ID", referencedColumnName = "id"))
   private List<Brand> brands;
}

我设法创建了一个品牌,但是当我尝试创建具有特定品牌的汽车时,它给了我以下信息

WARNING: Local Exception Stack: 
Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.SQLIntegrityConstraintViolationException: The statement was aborted because it would have caused a duplicate key value in a unique or primary key constraint or unique index identified by 'SQL121201171525140' defined on 'BRAND'.
Error Code: -1
Call: INSERT INTO Brand

我究竟做错了什么 ?

4

0 回答 0