2010-03-24 28 views
6

Tôi đang sử dụng Gilead để duy trì các thực thể trong dự án GWT của mình, tôi sử dụng chú thích ngủ đông. vấn đề của tôi là trên association.this onetomany của tôi là lớp người dùng của tôi chứa một tham chiếu đến một danh sách các FileLocationsTôi gặp phải lỗi với hiệp hội oneToMany khi sử dụng chú thích với gilead cho ngủ đông qua gwt

@Entity 
@Table(name = "yf_user_table") 
public class YFUser implements Serializable { 

@Id 
@GeneratedValue(strategy = GenerationType.AUTO) 
@Column(name = "user_id",nullable = false) 
private int userId; 
@Column(name = "username") 
private String username; 
@Column(name = "password") 
private String password; 
@Column(name = "email") 
private String email; 

@OneToMany (cascade = CascadeType.ALL, lấy = FetchType.LAZY) @JoinColumn (name = "USER_ID") Danh sách riêng fileLocations = new ArrayList();

Đây là tập tin của tôi vị trí lớp

@Entity 
@Table(name = "fileLocationTable") 
public class FileLocation implements Serializable { 

@Id 
@GeneratedValue(strategy = GenerationType.AUTO) 
@Column(name = "locationId", updatable = false, nullable = false) 
private int ieId; 
@Column (name = "location") 
private String location; 

@ManyToOne (lấy = FetchType.LAZY) @JoinColumn (name = "USER_ID", nullable = false) tin YFUser uploadedUser;

Khi tôi lưu dữ liệu này trong ứng dụng dành cho máy tính để bàn thông thường, nó hoạt động tốt, tạo bảng và tôi có thể thêm và lưu trữ dữ liệu vào đó. nhưng khi tôi cố gắng để duy trì dữ liệu trong ứng dụng gwt của tôi tôi nhận được lỗi tôi sẽ chỉ cho họ thấp hơn. đây là lớp ServiceImpl của tôi mở rộng PersistentRemoteService.

public class TestServiceImpl extends PersistentRemoteService implements TestService { 

public static final String SESSION_USER = "UserWithinSession"; 

public TestServiceImpl(){ 

    HibernateUtil util = new HibernateUtil(); 
     util.setSessionFactory(com.example.server.HibernateUtil 
       .getSessionFactory()); 

    PersistentBeanManager pbm = new PersistentBeanManager(); 
    pbm.setPersistenceUtil(util); 
    pbm.setProxyStore(new StatelessProxyStore()); 

    setBeanManager(pbm); 
} 

    @Override 
public String registerUser(String username, String password, String email) { 
    Session session = com.example.server.HibernateUtil.getSessionFactory().getCurrentSession(); 
    session.beginTransaction(); 

    YFUser newUser = new YFUser(); 
    newUser.setUsername(username);newUser.setPassword(password);newUser.setEmail(email); 

    session.save(newUser); 
    session.getTransaction().commit(); 

    return "Thank you For registering "+ username; 

} 

đây là lỗi mà tôi đang nhận được. lỗi sẽ biến mất khi tôi xóa onetoManyRelationship của mình và xây dựng nhà máy phiên của tôi khi tôi đặt nó vào, nó trên dòng buildsessionfactory trong hibernate Util rằng nó ném ngoại lệ này. lớp hibernate util của tôi cũng ok. đây là java.lang.NoSuchMethodError lỗi: javax.persistence.OneToMany.orphanRemoval() Z

Mar 24, 2010 10:03:22 PM org.hibernate.cfg.annotations.Version <clinit> 
INFO: Hibernate Annotations 3.5.0-Beta-4 
Mar 24, 2010 10:03:22 PM org.hibernate.cfg.Environment <clinit> 
INFO: Hibernate 3.5.0-Beta-4 
Mar 24, 2010 10:03:22 PM org.hibernate.cfg.Environment <clinit> 
INFO: hibernate.properties not found 
Mar 24, 2010 10:03:22 PM org.hibernate.cfg.Environment buildBytecodeProvider 
INFO: Bytecode provider name : javassist 
Mar 24, 2010 10:03:22 PM org.hibernate.cfg.Environment <clinit> 
INFO: using JDK 1.4 java.sql.Timestamp handling 
Mar 24, 2010 10:03:22 PM org.hibernate.annotations.common.Version <clinit> 
INFO: Hibernate Commons Annotations 3.2.0-SNAPSHOT 
Mar 24, 2010 10:03:22 PM org.hibernate.cfg.Configuration configure 
INFO: configuring from resource: /hibernate.cfg.xml 
Mar 24, 2010 10:03:22 PM org.hibernate.cfg.Configuration getConfigurationInputStream 
INFO: Configuration resource: /hibernate.cfg.xml 
Mar 24, 2010 10:03:22 PM org.hibernate.cfg.Configuration doConfigure 
INFO: Configured SessionFactory: null 
Mar 24, 2010 10:03:22 PM org.hibernate.cfg.search.HibernateSearchEventListenerRegister    enableHibernateSearch 
INFO: Unable to find org.hibernate.search.event.FullTextIndexEventListener on the  classpath. Hibernate Search is not enabled. 
Mar 24, 2010 10:03:22 PM org.hibernate.cfg.AnnotationBinder bindClass 
INFO: Binding entity from annotated class: com.example.client.Entity1 
Mar 24, 2010 10:03:22 PM org.hibernate.cfg.annotations.EntityBinder bindTable 
INFO: Bind entity com.example.client.Entity1 on table entityTable1 
Mar 24, 2010 10:03:22 PM org.hibernate.cfg.AnnotationBinder bindClass 
INFO: Binding entity from annotated class: com.example.client.YFUser 
Mar 24, 2010 10:03:22 PM org.hibernate.cfg.annotations.EntityBinder bindTable 
INFO: Bind entity com.example.client.YFUser on table yf_user_table 
Initial SessionFactory creation failed.java.lang.NoSuchMethodError:  javax.persistence.OneToMany.orphanRemoval()Z 
[WARN] Nested in javax.servlet.ServletException: init: 
java.lang.ExceptionInInitializerError 
at com.example.server.HibernateUtil.<clinit>(HibernateUtil.java:38) 
at com.example.server.TestServiceImpl.<init>(TestServiceImpl.java:29) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) 
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) 
at java.lang.reflect.Constructor.newInstance(Constructor.java:513) 
at java.lang.Class.newInstance0(Class.java:355) 
at java.lang.Class.newInstance(Class.java:308) 
at org.mortbay.jetty.servlet.Holder.newInstance(Holder.java:153) 
at org.mortbay.jetty.servlet.ServletHolder.getServlet(ServletHolder.java:339) 
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:463) 
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:362) 
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) 
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181) 
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:729) 
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405) 
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) 
at org.mortbay.jetty.handler.RequestLogHandler.handle(RequestLogHandler.java:49) 
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) 
at org.mortbay.jetty.Server.handle(Server.java:324) 
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505) 
at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:843) 
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:647) 
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211) 
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380) 
at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:396) 
at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488) 
Caused by: java.lang.NoSuchMethodError: javax.persistence.OneToMany.orphanRemoval()Z 
at org.hibernate.cfg.AnnotationBinder.processElementAnnotations(AnnotationBinder.java:1642) 
at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:772) 
at org.hibernate.cfg.AnnotationConfiguration.processArtifactsOfType(AnnotationConfiguration.java:629) 
at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:350) 
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1373) 
at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:973) 
at com.example.server.HibernateUtil.<clinit>(HibernateUtil.java:33) 
... 26 more 
[WARN] Nested in java.lang.ExceptionInInitializerError: 
java.lang.NoSuchMethodError: javax.persistence.OneToMany.orphanRemoval()Z 
at org.hibernate.cfg.AnnotationBinder.processElementAnnotations(AnnotationBinder.java:1642) 
at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:772) 
at org.hibernate.cfg.AnnotationConfiguration.processArtifactsOfType(AnnotationConfiguration.java:629) 
at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:350) 
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1373) 
at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:973) 
at com.example.server.HibernateUtil.<clinit>(HibernateUtil.java:33) 
at com.example.server.TestServiceImpl.<init>(TestServiceImpl.java:29) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) 
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) 
at java.lang.reflect.Constructor.newInstance(Constructor.java:513) 
at java.lang.Class.newInstance0(Class.java:355) 
at java.lang.Class.newInstance(Class.java:308) 
at org.mortbay.jetty.servlet.Holder.newInstance(Holder.java:153) 
at org.mortbay.jetty.servlet.ServletHolder.getServlet(ServletHolder.java:339) 
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:463) 
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:362) 
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) 
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181) 
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:729) 
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405) 
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) 
at org.mortbay.jetty.handler.RequestLogHandler.handle(RequestLogHandler.java:49) 
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) 
at org.mortbay.jetty.Server.handle(Server.java:324) 
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505) 
at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:843) 
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:647) 
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211) 
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380) 
at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:396) 
at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488) 
+0

Cầu nối được nhúng đi kèm với GWT có thể là PITA để định cấu hình (xem http://stackoverflow.com/questions/2364129/how-to- use-jstl-in-a-gwt-project/2365106 # 2365106). Tôi muốn chuyển sang một máy chủ Java bên ngoài (có thể là máy chủ bạn sẽ sử dụng trong sản xuất) và xem các lỗi/ngoại lệ có tồn tại hay không. Để biết thêm thông tin, hãy xem http://code.google.com/webtoolkit/doc/latest/FAQ_DebuggingAndCompiling.html#How_do_I_use_my_own_server_in_hosted_mode_instead_of_GWT%27s –

+0

vì vậy tôi đã chuyển sang người triển khai tomcat, nhưng bây giờ tôi đang gặp sự cố rằng ứng dụng của tôi cần phải được biên dịch lại , tất cả tôi đã làm là lấy tập tin chiến tranh cho projwctand gwt của tôi đặt nó trong trong ứng dụng web dir, bất kỳ lý do tại sao? – molleman

+0

Có, đọc kỹ tài liệu tôi đã liên kết ở trên - xem bướC# 4. Bạn cần đặt nội dung của thư mục * chiến tranh * vào thư mục webapps, không phải tệp war * * (lưu ý: bạn chỉ phải thực hiện thao tác này một lần). –

Trả lời

13

Xóa ejb3-persistance.jar và loại bỏ nó từ xây dựng đường giải quyết vấn đề của tôi, nó có thể làm việc cho bạn quá.

Cũng đừng quên thêm hibernate-jpa-2.0-api-1.0.0.Final.jar vào đường dẫn xây dựng của bạn.

+0

yup i sắp xếp nó ra. – molleman

+0

Tuy nhiên, một trải nghiệm nâng cấp khác nhưng không liên tục. Cảm ơn vì tiền hỗ trợ! –

4

sử dụng javax.persistence api 2.0, nhưng không phải 1.0 một

+0

có thể tải xuống từ repos mặt trời tại: http://download.java.net/maven/2/org/eclipse/persistence/javax.persistence/2.0.0/ và sau đó cài đặt với: mvn install: install-file -DgroupId = javax.persistence -DartifactId = persistence-api -Dversion = 2.0.0 -Dpackaging = jar -Dfile = đường dẫn/đến/the/download/file.jar – joostschouten

2

Chỉ cần thêm nhận xét để có thể giúp người khác đối mặt với điều này. Nó cũng có thể là máy chủ ứng dụng của bạn cung cấp một phiên bản của JPA "overshadows" phiên bản ngủ đông. Đối với tôi, tôi đã phải làm một cái gì đó như thế này:

 
mkdir /usr/local/resin/libremoved 
mv /usr/local/resin/lib/jpa* /usr/local/resin/libremoved/ 

0

Ngoài ra nếu bạn đang biên soạn với một "hoàn thành" thư viện Java EE API (ví dụ như một trong đó có cả JPA và các API khác như Servlet vv) sau đó đảm bảo thư viện đầy đủ tiếp tục xuống đường dẫn lớp hơn thư viện JPA 2.0 cụ thể

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