@PersistenceContext
よりはるかに優れた解決方法を読んだので、@PersistenceUnit
の使用方法を理解しようとしています。トラブルは、私が//get symbols
セクションとのEntityManagerのものを追加する前に私のアプリがロードされEntityManagerFactoryで問題が発生しました
@Controller
public class Content {
@PersistenceUnit(unitName = "CMTPU")
public EntityManagerFactory emf;
public EntityManager em = emf.createEntityManager();
@RequestMapping(value={"/content/edit*"}, method=RequestMethod.GET)
public ModelAndView edit(Model model) {
ModelAndView mv = new ModelAndView();
mv.setViewName("content/edit");
//get symbols
List<Symbol> symbols = em.createNamedQuery("Symbol.findAll").getResultList();
mv.addObject(symbols);
return mv;
}
}
...私はそれが正常に動作して取得する方法を見つけ出すことはできません....です。今度はエラーが表示されます重大度:アプリケーションの読み込み中に例外が発生しました:java.lang.IllegalStateException:ContainerBase.addChild:start:org.apache.catalina.LifecycleException:org.apache.catalina.LifecycleException:java.lang.NullPointerException
私はunitName
を定義する必要がありますが、その後私はthis documentationを見ていますが、完了していることを示していません。
persistence.xmlの
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" 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_2_0.xsd">
<persistence-unit name="CMTPU" transaction-type="JTA">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<jta-data-source>CMT_DEV</jta-data-source>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties/>
</persistence-unit>
</persistence>
私は私が間違ってやっているかを決定悩みを抱えています。以下に見られるように
更新
私のモデルは、データベースおよびそのすべてを定義します。 persistence.xmlが必要なのでしょうか?
package com.fettergroup.cmt.models;
import java.io.Serializable;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
@Entity
@Table(name = "symbol", catalog = "DATABASE1", schema = "dbo")
@NamedQueries({
@NamedQuery(name = "Symbol.findAll", query = "SELECT s FROM Symbol s"),
@NamedQuery(name = "Symbol.findById", query = "SELECT s FROM Symbol s WHERE s.id = :id"),
@NamedQuery(name = "Symbol.findBySymbol", query = "SELECT s FROM Symbol s WHERE s.symbol = :symbol"),
@NamedQuery(name = "Symbol.findByHtmlNumber", query = "SELECT s FROM Symbol s WHERE s.htmlNumber = :htmlNumber"),
@NamedQuery(name = "Symbol.findByHtmlName", query = "SELECT s FROM Symbol s WHERE s.htmlName = :htmlName"),
@NamedQuery(name = "Symbol.findByAsciiDec", query = "SELECT s FROM Symbol s WHERE s.asciiDec = :asciiDec"),
@NamedQuery(name = "Symbol.findByAsciiHex", query = "SELECT s FROM Symbol s WHERE s.asciiHex = :asciiHex")})
public class Symbol implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Basic(optional = false)
@NotNull
@Column(name = "id")
private Short id;
@Size(max = 10)
@Column(name = "symbol")
private String symbol;
@Size(max = 10)
@Column(name = "html_number")
private String htmlNumber;
@Size(max = 10)
@Column(name = "html_name")
private String htmlName;
@Size(max = 10)
@Column(name = "ascii_dec")
private String asciiDec;
@Size(max = 10)
@Column(name = "ascii_hex")
private String asciiHex;
public Symbol() {
}
public Symbol(Short id) {
this.id = id;
}
public Short getId() {
return id;
}
public void setId(Short id) {
this.id = id;
}
public String getSymbol() {
return symbol;
}
public void setSymbol(String symbol) {
this.symbol = symbol;
}
public String getHtmlNumber() {
return htmlNumber;
}
public void setHtmlNumber(String htmlNumber) {
this.htmlNumber = htmlNumber;
}
public String getHtmlName() {
return htmlName;
}
public void setHtmlName(String htmlName) {
this.htmlName = htmlName;
}
public String getAsciiDec() {
return asciiDec;
}
public void setAsciiDec(String asciiDec) {
this.asciiDec = asciiDec;
}
public String getAsciiHex() {
return asciiHex;
}
public void setAsciiHex(String asciiHex) {
this.asciiHex = asciiHex;
}
@Override
public int hashCode() {
int hash = 0;
hash += (id != null ? id.hashCode() : 0);
return hash;
}
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are not set
if (!(object instanceof Symbol)) {
return false;
}
Symbol other = (Symbol) object;
if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
return false;
}
return true;
}
@Override
public String toString() {
return "com.project1.models.Symbol[ id=" + id + " ]";
}
}
で動作します
サンプル持続性ユニットは、私はapplicationContext.xmlを内のBeanを定義していますか?これはJavaで初めてのことですので、私のニーズに適応することができない場合は、私にご負担ください。あなたが持っているものをコピーし、 'myPersistenceUnit'を' CMTPU 'に変更すると 'Error creating bean ServletContextリソース[/WEB-INF/applicationContext.xml]で定義されている 'entityManagerFactory'という名前の:org.springframework.orm.jpaタイプの内部Bean 'org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter#17b51d9'を作成できません。 vendor.HibernateJpaVendorAdapter]は、beanプロパティ 'jpaVendorAdapter'を設定しています。 ... ' – Webnet
Ingore私の前のコメント...私があなたが話した「永続性単位」の変更は含まれていませんでした。その変更を実装した後、「要素 'プロパティ」から始まる無効なコンテンツが見つかりました。この時点で子要素はありません。 ' – Webnet
この問題はどこにありますか?persistence.xmlまたはspring config? xmlの問題のように聞こえ、xmlをチェックしてください。 (コードをコピーして少し修正しましたが、いくつかの閉じるxml要素を削除することができます) – Ralph