JPA сущность в SQL - PullRequest
       45

JPA сущность в SQL

1 голос
/ 23 марта 2012

У меня есть этот класс сущностей:

@Entity  
public class User implements Serializable {

    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    private Long id;
    @ManyToOne
    private User myFriend;
    @OneToMany(mappedBy="friend")
    private Collection<User> friends;

    // Getters, Setters, serialVersionUID, etc... }
}

и этот фрагмент для заполнения базы данных (ссылка: JPA: как иметь отношение один ко многим одного и того же типа сущности )

public static void main(String[] args) {

    EntityManager em = ... // from EntityManagerFactory, injection, etc.

    em.getTransaction().begin();

    User a   = new User();
    User b   = new User();
    User c   = new User();

    b.setMyfriend(a);
    c.setMyfriend(a);
    a.setFriends(Arrays.asList(a, b));

    em.persist(a);
    em.persist(b);
    em.persist(c);

    em.getTransaction().commit();
}

Но у меня проблема с источником SQL.Могу ли я создать источник SQL из этого класса сущностей?

Ответы [ 3 ]

0 голосов
/ 23 марта 2012

Это то, что hibernate создал для меня при добавлении вашего кода:

CREATE TABLE `User` (
  `id` bigint(20) NOT NULL auto_increment,
  `myFriend_id` bigint(20) default NULL,
  PRIMARY KEY  (`id`),
  KEY `FKBF806F9DAD752252` (`myFriend_id`),
  CONSTRAINT `FKBF806F9DAD752252` FOREIGN KEY (`myFriend_id`) REFERENCES `User` (`id`)

Обратите внимание, что в вашей сущности есть ошибка.Отображаемое значение должно соответствовать имени атрибута (myFriend):

@Entity  
public class User implements Serializable {

    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    private Long id;
    @ManyToOne
    private User myFriend;
    @OneToMany(mappedBy="myFriend")
    private Collection<User> friends;

    // Getters, Setters, serialVersionUID, etc... }
}
0 голосов
/ 23 марта 2012

Спецификация JPA не требует предоставления инструмента для экспорта схемы базы данных.

Однако, если вы используете hibernate, вы можете использовать классы в пакете http://docs.jboss.org/hibernate/orm/3.5/api/org/hibernate/tool/hbm2ddl/package-summary.html. Особенно SchemaExport и SchemaUpdate.

0 голосов
/ 23 марта 2012

Если ваш вопрос заключается в том, как автоматически создавать таблицы в SQL, попробуйте добавить это в свой файл persistance.xml:

<property name="hibernate.hbm2ddl.auto" value="update" />
...