Tôi có một ứng dụng j2ee sử dụng ngủ đông với chú thích. Làm cách nào để chú thích trường Id trong lớp pojo của tôi để đặt nó thành tăng tự động hoặc được tạo tự động. và trong việc thêm đậu, tôi có để lại trường đó trong bean của tôi không?Hibernate Auto Increment ID
Trả lời
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private int id;
và bạn để nó null
(0
) khi kiên trì. (null
nếu bạn sử dụng Integer
/Long
wrappers)
Trong một số trường hợp, các chiến lược AUTO
được giải quyết để SEQUENCE
Rathen hơn để IDENTITY
hoặc TABLE
, vì vậy bạn có thể muốn tự thiết lập nó để IDENTITY
hoặc TABLE
(tùy thuộc vào cơ sở dữ liệu cơ bản).
Có vẻ như SEQUENCE
+ chỉ định tên trình tự phù hợp với bạn.
Nếu bạn có cột số mà bạn muốn tự động tăng, có thể là tùy chọn để đặt trực tiếp columnDefinition
. Điều này có lợi thế, rằng lược đồ tự động tạo ra giá trị ngay cả khi nó được sử dụng mà không ngủ đông. Điều này có thể làm cho mã của bạn db cụ thể mặc dù:
import javax.persistence.Column;
@Column(columnDefinition = "serial") // postgresql
Làm điều đó như sau: -
@Id
@GenericGenerator(name="kaugen" , strategy="increment")
@GeneratedValue(generator="kaugen")
@Column(name="proj_id")
public Integer getId() {
return id;
}
Bạn có thể sử dụng bất kỳ tên tùy ý thay vì kaugen. Nó làm việc tốt, tôi có thể thấy bên dưới các truy vấn trên console
Hibernate: select max(proj_id) from javaproj
Hibernate: insert into javaproj (AUTH_email, AUTH_firstName, AUTH_lastName, projname, proj_id) values (?, ?, ?, ?, ?)
Cái này phù hợp với tôi. Nhưng nó không cho phép tôi đặt giá trị ID. Tôi đã cố gắng setID với số nguyên hoặc int, nhưng nó sử dụng tối đa bất cứ lúc nào. Tôi nên làm gì? – desudesudesu
sử dụng @GenericGenerator (tên = "incrementId", chiến lược = "được giao") @GeneratedValue (generator = "incrementId") .Nó sẽ cho phép bạn đặt id theo cách của riêng bạn.Nhưng nếu bạn không chuyển id thì nó sẽ là 0 –
@Kaushik Lele Có phải chiến lược = "tăng" hibernate sẵn sàng tăng cường stratergy? Có phải là nó thuộc về các SEQUENCE, IDENTITY, AUTO, TABLE? –
FYI
Sử dụng netbeansLớp học New Entity từ cơ sở dữ liệu với một mysql * auto_increment * cột, tạo cho bạn một thuộc tính với các chú thích sau:
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "id")
@NotNull
private Integer id;
Điều này khiến tôi giống nhau n lỗi nói rằng cột không được rỗng, vì vậy tôi chỉ đơn giản là loại bỏ các anotation @NotNull để lại các thuộc tính null, và nó hoạt động!
Hibernate định nghĩa năm loại chiến lược thế hệ nhận dạng:
AUTO - một trong hai cột sắc, chuỗi hoặc bảng tùy thuộc vào DB cơ bản
TABLE - Bàn giữ id
IDENTITY - cột nhận dạng
SEQUENCE - chuỗi
sắc copy - bản sắc được sao chép từ một thực thể
Ví dụ sử dụng Bảng
@Id
@GeneratedValue(strategy=GenerationType.TABLE , generator="employee_generator")
@TableGenerator(name="employee_generator",
table="pk_table",
pkColumnName="name",
valueColumnName="value",
allocationSize=100)
@Column(name="employee_id")
private Long employeeId;
để biết thêm chi tiết, kiểm tra link.
Xin lỗi, Liên kết đã hết hạn ... –
- 1. C# Class Auto increment ID
- 2. Fluent nhibernate auto increment non key (Id) tài sản
- 3. Heroku MySQL Auto Increment
- 4. Auto Increment Composite Key InnoDB
- 5. Derby Auto-Increment và Eclipselink UnitOfWork
- 6. LINQ to Objects auto increment number
- 7. auto increment sau khi xóa từ một bảng
- 8. MySQL - cách sử dụng VARCHAR như AUTO INCREMENT Primary Key
- 9. MySQL Auto Increment hoạt động như thế nào?
- 10. Django Model Auto Increment Primary Key Dựa trên khóa ngoài
- 11. SQL Server: tùy ý auto-increment của chính
- 12. năm increment Auto trong vòng lặp mỗi năm
- 13. Auto-increment subquery trong lựa chọn công bố TSQL
- 14. JPA/Hibernate nhúng id
- 15. SQL Server độc đáo auto-increment cột trong bối cảnh của một cột
- 16. thiếu sót Auto Increment khi sử dụng INSERT ... SELECT ngay cả với innodb_autoinc_lock_mode = 0
- 17. quá tải trước increment và sau increment
- 18. Auto Tạo Id Unique chữ và số với C#
- 19. pre-increment vs post-increment - cho vòng lặp tốc độ
- 20. Move constructor và pre-increment vs hậu increment
- 21. Hibernate/persistence mà không có @Id
- 22. Hibernate Xóa đối tượng theo id
- 23. Hibernate (JPA) cascade - lấy id từ con
- 24. Hibernate: nhận thực thể theo id
- 25. MongoDB - Upsert với increment
- 26. increment một biến trong các mẫu django
- 27. Android: SeekBar Increment Value - Cách
- 28. C# Pre- & Post Increment confusions
- 29. biến thư increment trong awk
- 30. Hibernate JPA chú giải: Vấn đề với Id nhúng
id của tôi là loại chuỗi. những gì tôi sẽ đặt cho nó. Bởi vì tôi nhận được lỗi này. Gây ra bởi: javax.el.ELException: org.hibernate.exception.SQLGrammarException: không thể nhận được giá trị chuỗi tiếp theo – cedric
autoincrement nghĩa là số đó được tăng lên. Không thể tăng chuỗi. Làm cho cột int – Bozho
cột myid trong cơ sở dữ liệu là số kiểu. Và tôi đã thay đổi id của tôi trong pojo của tôi thành int. tôi nhận được chuỗi lỗi không tồn tại – cedric