@parkito

Как сгенирировать первичный ключ в jpa?

Здравствуйте. Помогите, пожалуйста, решить проблему. Хотелось бы чтобы значение первичного ключа, при добовлении нового объекта, генерировалось само.
Для этого делаю:
@Entity
public class Tariff {
    @Id
    @Column(name = "id")
    @GeneratedValue
    private int id;
    @Basic
    @Column(name = "title")
    private String title;

    public Tariff() {
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }


    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public Tariff(String title) {
//        this.id = id;
        this.title = title;
    }  
}


и соответственно

public class TariffDAO {
    private EntityManagerFactory emf = Persistence.createEntityManagerFactory("operator");
    private EntityManager em = emf.createEntityManager();

    public static void main(String[] args) {
        TariffDAO tariffDAO = new TariffDAO();
        tariffDAO.addTariff("Base");
    }

    public void addTariff(String title) {
        Tariff tariff = new Tariff(title);
        try {
            em.getTransaction().begin();
            em.persist(tariff);
            em.getTransaction().commit();
            System.out.println("Tariff added");
        } catch (PersistenceException e) {
            e.printStackTrace();
            System.out.println("Fail");
        } finally {
            em.close();
            emf.close();
        }
    }

}

Однако вылитает длинный эксепшн

ERROR: could not read a hi value
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'operator.hibernate_sequence' doesn't exist
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
	at com.mysql.jdbc.Util.handleNewInstance(Util.java:404)
	at com.mysql.jdbc.Util.getInstance(Util.java:387)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:942)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3966)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3902)
	at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2526)
	...


Что я делаю не так?
  • Вопрос задан
  • 215 просмотров
Решения вопроса 1
EugeneP2
@EugeneP2
Java Dev
@GeneratedValue(strategy = GenerationType.IDENTITY)


или вот 1 или 2
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы