2011-10-23 34 views
11

Mỗi lần tôi thực hiện một dự án JPA Eclipse báo cáo rằng có lỗi trong dự án của tôi nhưng tôi không hiểu tại sao nó lại làm như vậy. Tôi đã thêm hình ảnh và các lỗi dưới đây:Lỗi báo cáo Eclipse về dự án JPA của tôi

enter image description here

Description Resource Path Location Type Column "id" cannot be resolved on table "page" Page.java /BreakpointJPA/src/no/breakpoint/domain line 14 JPA Problem

Description Resource Path Location Type Column "title" cannot be resolved on table "page" Page.java /BreakpointJPA/src/no/breakpoint/domain line 18 JPA Problem

Description Resource Path Location Type Primary key join column "id" cannot be resolved on table "page" Page.java /BreakpointJPA/src/no/breakpoint/domain line 10 JPA Problem

enter image description here

+0

Bạn có thể hiển thị chi tiết về bảng 'trang' của mình không? –

+0

Vâng, tôi chưa triển khai dấu thời gian, vì vậy đó là lý do tại sao chúng không nằm trong thực thể Trang. – LuckyLuke

+0

Vì vậy, tôi đoán rằng Eclipse đang nói rằng thực thể của bạn không phản ánh đúng trạng thái của cơ sở dữ liệu? Eclipse làm cách nào để biết bạn đang làm việc với cơ sở dữ liệu nào? Có thể nó không sử dụng DB bạn đã hiển thị 'adesnqhp_javaee'? –

Trả lời

26

Tôi đã có cùng một vấn đề, giải pháp đối với tôi là để làm mới kết nối cơ sở dữ liệu.

Mở chế độ xem JPA, tìm trình khám phá nguồn dữ liệu. Ở đó bạn mở Database Connection, kết nối với cơ sở dữ liệu của bạn, nhấn refresh. Sau đó, thực hiện một số thay đổi trong tệp của bạn và lưu nó, tôi đã thêm chú thích @Column (name = "") vào trường id của tôi. Sau đó, thông báo lỗi đã biến mất và tôi đã xóa chú thích Cột.

Vấn đề có vẻ là nhật thực đọc bảng cơ sở dữ liệu sau khi thiết lập kết nối đầu tiên, sau đó kết nối được đóng. Vì vậy, nếu bạn, như tôi đã làm, thực hiện một số thay đổi sau kết nối đầu tiên này trong cơ sở dữ liệu của bạn, như thay đổi tên trường từ foo_id thành id, nhật thực không biết điều đó và đi kèm với lỗi này.

+5

Tôi sẽ chỉ lưu ý rằng bạn cũng có thể bắt buộc xác thực JPA thủ công bằng cách sử dụng Project Explorer (Juno Service Release 2). Nhấp chuột phải vào dự án, chọn "Xác thực". Điều này tránh phải thực hiện thay đổi không mong muốn đối với tệp nguồn chỉ để bắt buộc xác thực. – mrjmh

+0

Tôi đã nhập các lớp từ bảng db hiện tại và nhận được "danh mục X không thể được giải quyết cho bảng Y". Tôi vừa xóa thông tin danh mục (được đặt thành tên của lược đồ cơ sở dữ liệu mà từ đó các thực thể được nhập khẩu) trong mã Java cho tất cả các lớp do Eclipse tạo ra và vấn đề đã biến mất. – Nick

0

Bạn có thể thử này:

@Id 
@GeneratedValue(strategy=GenerationType.AUTO) 
@Column(name = "id", unique=true, nullable=false) 
private int id 
+0

Tương tự cho tiêu đề: @Column (name = "title") –

0

Hãy thử làm mã hỗ trợ bên trong dấu ngoặc kép của @column (name =" "). Hoặc mở khung nhìn Chi tiết JPA và xem kết hợp tên cột để xem các tùy chọn cột. Không có lỗi xác thực trên chú thích @Table (name = "page"), vì vậy có vẻ như Eclipse đang tìm kiếm bảng trang.

0

Chú thích có vẻ chính xác, bạn có chắc đường dẫn dự án của bạn là tốt không? cố gắng và xây dựng thực thể không có trường id và tiêu đề trước hết.

1

Bạn có giao diện JPA/JPA2 được bao gồm trong dự án của mình không? Nếu bạn đang sử dụng maven, bạn cần phải bao gồm một sự phụ thuộc cho các lớp. Tôi cho rằng đó là vì không có dòng màu đỏ xuất hiện trong các tờ khai nhập khẩu, nhưng chỉ để được an toàn, bạn nên xác nhận rằng chúng tồn tại.

Đối với một sự phụ thuộc JPA2, bạn có thể sử dụng:

<dependency> 
    <groupId>org.hibernate.javax.persistence</groupId> 
    <artifactId>hibernate-jpa-2.0-api</artifactId> 
    <version>1.0.0.Final</version> 
</dependency> 
+0

Tôi chỉ đọc lại câu hỏi của bạn và nhận ra rằng câu trả lời của tôi có thể không liên quan đến vấn đề, nhưng để nó ở đây là thông tin hữu ích cho người khác vì nó có liên quan đến vấn đề. –

2

đọc này nếu bạn muốn giải quyết vấn đề của bạn một cách dễ dàng

Không có vấn đề trong cơ sở dữ liệu của bạn. Bạn chỉ cần tạo một kết nối mới từ Eclipse đến cùng một cơ sở dữ liệu mà chúng tôi thực hiện trong khi thêm các khả năng JPA vào Dự án.

Các bước: -
Tạo cơ sở dữ liệu mới từ dấu nhắc mysql của bạn.
Nhấp chuột phải vào Dự án của bạn trong Eclipse/MyEclipse, sau đó chuyển đến Thuộc tính.
Nhấp vào tab Eclipse/MyEclipse ở bên trái và sau đó nhấp vào menu phụ JPA.
Sau đó nhấp vào Tạo kết nối mới. Đặt tên Kết nối mới. Và thêm cùng một cơ sở dữ liệu. (Bạn cũng có thể chọn thay đổi cơ sở dữ liệu của mình, nhưng cùng một cơ sở dữ liệu cũng sẽ làm).
Kiểm tra kết nối và nhấp vào Hoàn tất.
Lần đầu tiên nó sẽ không hiển thị tên kết nối mới được tạo. Chỉ cần nhấp vào Ok để đóng cửa sổ đó.

Sau đó, nhấp chuột phải một lần nữa vào Project và sau đó nhấp vào Propeties.Bây giờ bạn có thể thấy kết nối mới được tạo ra của bạn trên danh sách thả xuống Kết nối đó. Chọn và bấm OK.

Lỗi của bạn sẽ biến mất.

Lý do có thể cho lỗi này: -
Eclipse tạo kết nối với cơ sở dữ liệu của bạn mỗi lần bạn kết nối bằng bất kỳ dự án nào sử dụng persistence.xml, nhưng chỉ lần đầu tiên.
Vì vậy, bất kỳ thay đổi nào sau đó, đặc biệt là từ phía cơ sở dữ liệu (tên bảng, v.v.) sẽ ném một lỗi từ Eclipse.

Cảm ơn bạn.

4

Chủ đề cũ, tuy nhiên tôi chỉ gặp vấn đề tương tự và được giải quyết bằng cách tiếp cận nhanh hơn.

  1. Thuộc tính dự án -> JPA
  2. Thay đổi kết nối đến. Lượt áp dụng.
  3. Thay đổi kết nối thành giá trị trước đó. Lượt áp dụng.

Hy vọng điều này sẽ giúp ai đó.

2

Tôi gặp vấn đề tương tự. Dưới đây là cách tôi giải quyết nó

  1. làm mới kết nối
    • Đến Data Source Explorer
    • Chọn kết nối và click chuột phải
    • chọn Refresh
  2. sạch dự án
    • Đi tới menu Dự án
    • chọn sạch
0

Trong trường hợp của tôi nó chỉ là kết nối cũ trong Properties-> JPA-> Thêm kết nối. Vì vậy, làm mới sẽ không giúp đỡ. Kết nối mới cho cơ sở dữ liệu chính xác sẽ giúp khi làm mới sẽ không.

2

Đi tới Trình khám phá nguồn dữ liệu, ngắt kết nối cơ sở dữ liệu, sau khi kết nối kết nối cơ sở dữ liệu, bấm chuột phải vào dự án của bạn và bấm xác thực.

Tôi hy vọng nó sẽ giúp bạn.

Các vấn đề liên quan