2015-04-23 3 views
0

Имеет проблемы с развертыванием веб-проекта с объектами с использованием отображения OneToMany. Вот первый объект:JPA Отображение сущности ManyToOne

@Entity 
    @Table(name = "OWNER") 
    public class Owner implements Serializable 
    { 
     @Id 
     @Column(name = "ID", nullable = false) 
     private double ID; 

     @Column(name = "NAME", nullable = false, length = 16) 
     private String name; 

     @OneToMany(cascade={CascadeType.ALL}, mappedBy="USER_ID", targetEntity=Asset.class) 
     private List<Asset> assets; 
    } 

Вот второй Entity, который зависит от составного ключа:

@Entity 
@IdClass(AssetKey.class) 
@Table(name = "ASSETS") 
public class Asset implements Serializable 
{ 
    @Id 
    @ManyToOne 
    @JoinColumn(name = "USER_ID") 
    private double USER_ID; 

    @Id 
    @Column(name = "ASSET_ID") 
    private String asset; 
} 

Вот ключ:

public class ConstraintAnchorAssetImplKey implements Serializable 
{ 
    private double CA_ID; 
    private String asset; 

    //Also includes overriden hash/equals 
} 

После развертывания я получаю necure NullPointerException:

12:59:59,841 ERROR [org.jboss.msc.service.fail] (ServerService Thread Pool -- 50) MSC000001: Failed to start service jboss.persistenceunit."MyProj.war#MyProjJPA": org.jboss.msc.service.StartException in service jboss.persistenceunit."MyProj.war#MyProjJPA": java.lang.NullPointerException 
at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1.run(PersistenceUnitServiceImpl.java:103) [jboss-as-jpa-7.4.3.Final-redhat-2.jar:7.4.3.Final-redhat-2] 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [rt.jar:1.8.0_05]  
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [rt.jar:1.8.0_05]  
at java.lang.Thread.run(Thread.java:745) [rt.jar:1.8.0_05] 
at org.jboss.threads.JBossThread.run(JBossThread.java:122) [jboss-threads-2.1.1.Final-redhat-1.jar:2.1.1.Final-redhat-1] 
Caused by: java.lang.NullPointerException 
at org.hibernate.cfg.Configuration.processFkSecondPassInOrder(Configuration.java:1461) 
at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1391) 
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1786)  at org.hibernate.ejb.EntityManagerFactoryImpl.<init>(EntityManagerFactoryImpl.java:96) 
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:915)  
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:900)  
at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:76)  
at org.jboss.as.jpa.service.PersistenceUnitServiceImpl.createContainerEntityManagerFactory(PersistenceUnitServiceImpl.java:200) [jboss-as-jpa-7.4.3.Final-redhat-2.jar:7.4.3.Final-redhat-2]  
at org.jboss.as.jpa.service.PersistenceUnitServiceImpl.access$600(PersistenceUnitServiceImpl.java:57) [jboss-as-jpa-7.4.3.Final-redhat-2.jar:7.4.3.Final-redhat-2] 
at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1.run(PersistenceUnitServiceImpl.java:99) [jboss-as-jpa-7.4.3.Final-redhat-2.jar:7.4.3.Final-redhat-2] ... 4 more 

Это исключение вводится с аннотациями OneToMany/ManyToOne. Предыдущий успех был достигнут путем простого заполнения/сохранения двух объектов отдельно, что, конечно, не идеально.

Спасибо за любой совет!

+0

Вы пробовали отладочный код. – kirti

+0

Это на развертывание веб-проекта. У меня мало интереса к отладке спящего режима, и я честно не уверен, что у меня есть возможность. Я надеялся, что это будет простая/узнаваемая ошибка в моих аннотациях. – Err404

ответ

0

ли вы пытаетесь заменить:

@OneToMany(cascade={CascadeType.ALL}, mappedBy="USER_ID", targetEntity=Asset.class) 
private List<Asset> assets; 

с:

@OneToMany(cascade={CascadeType.ALL}, mappedBy="USER_ID", targetEntity=Asset.class) 
private Set<Asset> assets = new HashSet<Asset>(0); 

или:

@OneToMany(cascade={CascadeType.ALL}, mappedBy="USER_ID", targetEntity=Asset.class) 
private List<Asset> assets = new ArrayList<Asset>(0); 

Надеется, что это может помочь вам решить проблемы!

+0

Это не решило NPE. – Err404