2012-09-17 17 views
12

Tôi có một dự án được kích hoạt maven được nhập vào Eclipse. Từ Eclipse, tôi nhận được một lỗi "Không phát có tên là 'system-uuid' được định nghĩa trong đơn vị bền vững" trên phần hệ thống-uuid của các dòng sau:Eclipse: Không có trình tạo tên có tên "system-uuid" được định nghĩa trong đơn vị persistence

@Id @GeneratedValue(generator = "system-uuid") 
@GenericGenerator(name = "system-uuid", strategy = "uuid") 
@Column(length = 36) 
public String getId() { 
    return id; 
} 

Dự án được xây dựng một cách chính xác từ dòng lệnh. Điều gì gây ra Eclipse để tạo ra lỗi này và làm cách nào để sửa lỗi đó?

Các tập tin bền bỉ trông như thế này ..

<persistence xmlns="http://java.sun.com/xml/ns/persistence" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence 
    http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" 
    version="1.0"> 
    <persistence-unit name="xxxx"/> 
</persistence> 

Trả lời

33

Bạn có thể bật các lỗi tắt/xuống dưới Preferences -> Java Persistence -> JPA -> lỗi/cảnh báo dưới 'truy vấn và phát' bằng cách thay đổi lỗi 'Máy phát điện không được xác định trong đơn vị bền vững' đối với cảnh báo.

Điều này trông giống như một lỗi trong phần mở rộng Hibernate Tools của Dali trong Eclipse.Bạn có thể báo cáo điều này với công cụ Hibernate hoặc có thể điều này được khắc phục trong một phiên bản mới hơn.

+1

Nhưng nếu các nhà phát triển đưa lỗi này phải được kiểm tra, tôi muốn dừng lại để xem xét rằng chúng ta nên làm điều gì đó trong persistence.xml, không bạn nghĩ vậy? : S –

+4

Câu trả lời này có vẻ khá cũ. Tôi vừa tải về Eclipse luna và vấn đề vẫn còn đó. Tôi không thể tin rằng một con bọ sẽ sống trong một thời gian dài như vậy. Đây thực sự là một lỗi trên Dali? –

+0

Điều này làm việc cho tôi. Tuy nhiên, tôi phải đồng ý với @IgnacioRubio. Điều này ngăn chặn các lỗi và chúng ta hãy tiến hành ... tuy nhiên, tại sao lỗi được ném ở nơi đầu tiên?Tôi đã không tìm thấy giải pháp dựa trên nghiên cứu của mình. –

1

Phiên bản mới hơn của hỗ trợ JPA của Eclipse dường như phụ thuộc vào thứ tự của chú thích. Bạn đang xác định máy phát sau khi bạn cố gắng sử dụng em.

này sẽ làm việc:

@Id 
@GenericGenerator(name = "system-uuid", strategy = "uuid") 
@GeneratedValue(generator = "system-uuid") 
@Column(length = 36) 
public String getId() { 
    return id; 
} 

Tuy nhiên thứ tự của các chú thích trong Java không phải có một ý nghĩa. Vì vậy, Karen là đúng, nó có vẻ là một lỗi.

+1

Tôi đã gửi một báo cáo lỗi mới: https://bugs.eclipse.org/bugs/show_bug.cgi?id=474298 – roehrijn

+5

không hoạt động cho tôi theo bất kỳ thứ tự nào – yair

+0

Đã không hoạt động cho tôi theo bất kỳ thứ tự nào. Và Project> Clean ... (gợi ý bên dưới) không giúp được gì cả. Tôi đang sử dụng Mars.2 (4.5.2). – mbmast

0

Tôi đã có lỗi gần như giống nhau - tôi đã sử dụng trình tạo id tùy chỉnh của mình - trong các nhật thực nhật sau khi nhập dự án của tôi từ github.

lỗi: Không phát tên “idGenEchantillon” được định nghĩa trong đơn vị kiên trì

Vì vậy, câu trả lời của tôi là không thực sự cho câu hỏi chính, nhưng đối với các nhà phát triển khác có cùng một lỗi như tôi có thể xem tại đây .

mã:

@Id 
@GenericGenerator(name = "idGenEchantillon", strategy = "com.labo.model.KeyGenaratorForEchantillon") 
@GeneratedValue(generator ="idGenEchantillon") 
@Column(name = "ID_ECHANTILLON", length = 12) 
private String idEchantillon; 

tôi đã sử dụng maven để quản lý phụ thuộc.

  1. Tôi đã loại bỏ khía cạnh JPA khỏi dự án của mình => mỗi khi tôi cập nhật dự án của mình bằng Maven, dự án sẽ lấy lại khía cạnh JPA => lỗi ở lại.
  2. Tôi đã tắt tùy chọn "Trình cấu hình JPA" của Maven: Cửa sổ >> Tùy chọn >> Maven >> Tích hợp Java EE, sau đó bỏ chọn "JPA CONFIGURATOR", sau đó tôi cập nhật dự án của mình bằng Maven => lỗi Không còn.
5

Eclipse Luna: Điều này dường như làm việc

Project -> Clean