试图在mysql数据库中保留一个对象

时间:2014-06-28 10:57:18

标签: mysql jpa

我用一些表创建了一个mySQL数据库,我的问题的相关问题是玩家和季节。

表季包含:

Season_id (int),seasonNumber(int),total(int), week(int), value(int), totalsell(int)

我有我的Java代码,在那里我创建了我的实体并使用anotations我确定了实体以及每个权利的主键。

以下是我的季节POJO课程的属性:

private int id;
private LinkedList<Player> keepers;
private LinkedList<Player> defs;
private LinkedList<Player> inners;
private LinkedList<Player> wings;
private LinkedList<Player> innersTreino;
private LinkedList<Player> strikers;
private LinkedList<Player> strikersTreino;
private int seasonNumber;
private LinkedList<Player> vendas;
private LinkedList<Player> sold;
private int total;
private int week;
private int value; 
private int totalsell;

之后我创建了我的entitymanagerFactory和我的实体管理器,并尝试测试我是否可以填充我的数据库:

EntityManagerFactory emf = Persistence.createEntityManagerFactory("htTeamPU");
  EntityManager em = emf.createEntityManager();

  em.getTransaction().begin();
  Season test = new Season();
  test.setSeasonNumber(43);
  test.setTotal(5);
  test.setWeek(100);
  test.setValue(200);
  test.setTotalsell(10);

  em.persist(test);
  em.getTransaction().commit();
  em.close();
  emf.close();

当我运行我的程序时,我有一个例外:

Internal Exception: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'DEFS' in 'field list'

问题似乎是我的对象是9个链接的玩家列表,我没有在我的季节表中显示它们。我真的不知道如何在我的赛季表上代表链接列表来解决我的问题。

1 个答案:

答案 0 :(得分:2)

您应该与Player和Seoson表建立多对多的关系。

对于您的一个名单;

在拥有方(Seoson)

@ManyToMany(cascade={CascadeType.PERSIST, CascadeType.MERGE})
@JoinTable(name = "seoson_keepers", 
            joinColumns = { @JoinColumn(name = "Seoson_id")}, 
            inverseJoinColumns={@JoinColumn(name="Player_id")})  
private List<Player> keepers;

反面(玩家)

@ManyToMany(cascade={CascadeType.PERSIST, CascadeType.MERGE}, 
            mappedBy = "keepers")
private List<Seoson> seosons; 

您可以在jpa here中找到有关多对多关系的更多详细信息。

根据您的设计,您必须为所有列表重复上述代码。