Nasıl JPA ek açıklamalar ile MYSQL otomatik artış alan açıklama için
Doğrudan sadede gelelim, sorun MySQL DB içine nesne Operatör kurtarıyor. Önce kaydetmek için, bu tablodan seçmek için çalışıyorum ve işe yarıyor, bu yüzden db bağlantısı.
Burada Operatör benim nesne:
@Entity
public class Operator{
@Id
@GeneratedValue
private Long id;
private String username;
private String password;
private Integer active;
//Getters and setters...
}
EntityManager
JPA kullanmak’s persist
yöntem. ben kurtarmak için
Burada bazı günlük:
Hibernate: insert into Operator (active, password, username, id) values (?, ?, ?, ?)
com.mysql.jdbc.JDBC4PreparedStatement@15724a0: insert into Operator (active,password, username, id) values (0, 'pass', 'user', ** NOT SPECIFIED **)
Gördüğüm kadarıyla, sorun otomatik arttırma ile yapılandırma Ama nerede çözemiyorum.
Denedim bazı hileler burada gördüm: Hibernate not respecting MySQL auto_increment primary key field Ama hiçbir şey çalıştı
Eğer başka yapılandırma dosyaları gerekiyorsa onları temin edeceğim.
DDL:
CREATE TABLE `operator` (
`id` INT(10) NOT NULL AUTO_INCREMENT,
`first_name` VARCHAR(40) NOT NULL,
`last_name` VARCHAR(40) NOT NULL,
`username` VARCHAR(50) NOT NULL,
`password` VARCHAR(50) NOT NULL,
`active` INT(1) NOT NULL,
PRIMARY KEY (`id`)
)
CEVAP
AUTO_INCREMENT
MySQL sütun kullanmak için IDENTITY
bir strateji kullanmak gerekiyor
@Id @GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;
MySQL ile: AUTO
kullanırken olsun istiyorum
@Id @GeneratedValue(strategy=GenerationType.AUTO)
private Long id;
Aslında eşdeğerdir
@Id @GeneratedValue
private Long id;
Diğer bir deyişle, eşleme çalışması gerekir. Ama Hazırda bir SQL ınsert deyimi id
sütunu atlamak gerekir, ve değildir. Uyumsuzluk bir tür olmalı.
Hazırda yapılandırma MySQL lehçesi (muhtemelen MySQL5InnoDBDialect
yada kullandığınız motora bağlı olarak MySQL5Dialect
) belirtmek mü?
Ayrıca, tabloyu kim yarattı? İlgili DDL gösterebilir misin?
Takip:Senin sorunun sunamayacağı. Kod kullanarakseninvarlık veseninDDL, Hazırda MySQL ile (beklenen) aşağıdaki SQL oluşturur:
insert
into
Operator
(active, password, username)
values
(?, ?, ?)
id
sütun beklendiği gibi yukarıdaki ifade yoktur, unutmayın.
, Kodu, tanımı ve lehçesi doğru ve tutarlı bir tablo özetle, çalışması gerekir. Eğer değil sizin için belki bir şey çıkar sync (temiz bir yapı, çift onay inşa dizini, vb) veya başka bir şey yanlış (onay günlükleri için şüpheli bir şey).
Lehçesi ile ilgilisadeceMySQL5Dialect
MySQL5InnoDBDialect
arasındaki fark DDL oluştururken daha sonra ENGINE=InnoDB
tablo nesneleri ekler. Ya biri, ya diğeri kullanılarak oluşturulan SQL değiştirmez.
Nasıl aynı tabloda satır ve bir kopyas...
Nasıl MySQL otomatik artış değeri geçe...
Nasıl Android Gradle içinde versionCod...
İki alan üzerinde tabloları birleştirm...
Nasıl web tarayıcı otomatik tamamlama ...