2012-04-11 21 views
5

Hi Tôi đã viết mã như thế nàyLàm thế nào để tạo ra một ID ngủ đông với khả năng tự tạo ra với một giá trị bắt đầu

@Id 
@Column(nullable=false) 
@GeneratedValue(strategy=GenerationType.AUTO) 
public int getUserID() { 
    return UserID; 
} 

Nhưng tôi tự thiết lập nó từ DAO như "e.setUserID (01); " chèn.Không có hàng nào khác không chèn Có quá trình nào để lấy giá trị cho id và truy lục giá trị được tạo tự động hay không. Im suy nghĩ tôi sẽ nhận được một số giúp đỡ

Trả lời

4

Sử dụng

@GenericGenerator(name="generator", strategy="increment") 
@GeneratedValue(generator="generator") 
+0

Nó hoạt động, nhưng nó được gán cho một cột khác giá trị được tạo ra – Vidya

+0

Nếu có ai bỏ phiếu, nên có lý do nên chia sẻ, Tại sao lại bỏ phiếu? – Shehzad

+0

Đây không phải là một phương pháp an toàn vì máy phát điện chọn id tối đa từ db và tăng nó. Mặc dù nó rất hữu ích cho mục đích thử nghiệm. Các tài liệu rõ ràng cảnh báo 'Không sử dụng trong một cụm!'. Hãy khám phá: https://docs.jboss.org/hibernate/orm/3.2/api/org/hibernate/id/IncrementGenerator.html https://docs.jboss.org/hibernate/orm/3.3/reference/en /html/mapping.html#mapping-declaration-id –

5

Sử dụng SẮC loại thế hệ thay vì tự động. Sử dụng một Dài cho id. Tôi cũng khuyên bạn nên thay đổi tên từ UserID tới userId. Đừng quên @Entity cho tên lớp.

@Entity 
public class MyClass{ 

private Long userId; 

    @Id 
    @GeneratedValue(strategy=GenerationType.IDENTITY) 
    @Column 
    public Long getUserID(){ 
     return userId; 
    } 

    //.. rest of class 

} 

Hãy cẩn thận với quy ước đặt tên và đảm bảo tên và loại trường khớp với tên và loại trường từ cơ sở dữ liệu.

+0

Nó sẽ tự động tạo giá trị ID khi hàng tạo ... hoặc chúng ta nên gọi setter Trong phương thức – Vidya

+0

Bạn nên ** không bao giờ ** đặt id theo cách thủ công nếu trong cơ sở dữ liệu id xuất hiện dưới dạng nhận dạng. Trước tiên, hãy đảm bảo rằng cấu hình cơ sở dữ liệu của bạn theo cách tự động tăng số id. Sau đó ánh xạ cột id như tôi đã đề xuất ở trên. Một lần nữa, hãy cẩn thận khi đặt tên các quy ước và loại dữ liệu. –