タグ付けされた質問 「jpa」

Java Persistence API(JPA)は、Javaオブジェクト/クラスとリレーショナルデータベース間のデータへのアクセス、永続化、および管理のためのJava仕様です。これはEJB 3.0仕様の一部であり、オブジェクトからリレーショナルへのマッピング(ORM)の業界標準アプローチです。

6
双方向のJPA OneToMany / ManyToOne関連付けにおける「関連付けの逆側」とは何ですか?
例セクションの@OneToManyJPA注釈参照。 例1-59 @OneToMany-ジェネリックスを持つCustomerクラス @Entity public class Customer implements Serializable { ... @OneToMany(cascade=ALL, mappedBy="customer") public Set<Order> getOrders() { return orders; } ... } 例1-60 @ManyToOne-ジェネリックスを持つ注文クラス @Entity public class Order implements Serializable { ... @ManyToOne @JoinColumn(name="CUST_ID", nullable=false) public Customer getCustomer() { return customer; } ... } Customerエンティティは協会の所有者であるように私には思えます。ただし、mappedBy同じドキュメントの属性の説明では、次のように書かれています。 関係が双方向の場合、例1-60に示すように、関連付けの逆(非所有)側のmappedBy要素を、関係を所有するフィールドまたはプロパティの名前に設定します。 しかし、私が間違っていなければ、例のように見えます、 mappedByます。実際には、非所有側ではなく、関連付けの所有側で指定されています。 だから私の質問は基本的に: 双方向(1対多/多対1)の関連付けでは、どのエンティティが所有者ですか?片側を所有者として指定するにはどうすればよいですか?多くの側を所有者として指定するにはどうすればよいですか? …

10
Hibernateプロキシを実際のエンティティオブジェクトに変換する方法
Hibernateの実行中に、Session一部のオブジェクトをロードしていますが、一部のオブジェクトは遅延ロードによりプロキシとしてロードされます。すべて問題なく、遅延ロードをオフにしたくありません。 しかし、後で一部のオブジェクト(実際には1つのオブジェクト)をRPC経由でGWTクライアントに送信する必要があります。そして、この具象オブジェクトはプロキシです。だから私はそれを実際のオブジェクトに変える必要があります。Hibernateで「マテリアライズ」のようなメソッドを見つけることができません。 一部のオブジェクトをプロキシからクラスとIDを知っている実数に変えるにはどうすればよいですか? 現時点で私が目にする唯一の解決策は、そのオブジェクトをHibernateのキャッシュから削除して再ロードすることですが、それは多くの理由で本当に悪いです。

12
JPAでList <String>型のプロパティを永続化する方法は?
リスト型のフィールドが永続化されているエンティティを取得する最もスマートな方法は何ですか? Command.java package persistlistofstring; import java.io.Serializable; import java.util.ArrayList; import java.util.List; import javax.persistence.Basic; import javax.persistence.Entity; import javax.persistence.EntityManager; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Persistence; @Entity public class Command implements Serializable { @Id @GeneratedValue(strategy = GenerationType.AUTO) Long id; @Basic List&lt;String&gt; arguments = new ArrayList&lt;String&gt;(); public static void main(String[] args) { Command …
158 java  orm  jpa 

7
JPA OneToManyが子を削除しない
@OneToMany親エンティティと子エンティティの間の単純なマッピングに問題があります。コレクションから削除しても、子レコードは削除されません。 親: @Entity public class Parent { @Id @Column(name = "ID") private Long id; @OneToMany(cascade = {CascadeType.ALL}, mappedBy = "parent") private Set&lt;Child&gt; childs = new HashSet&lt;Child&gt;(); ... } 子供: @Entity public class Child { @Id @Column(name = "ID") private Long id; @ManyToOne(cascade = CascadeType.ALL) @JoinColumn(name="PARENTID", nullable = false) private Parent …
158 java  jpa  jpa-1.0 

16
JPAによって発行されたSQLクエリを表示する方法
私のコードが次のような呼び出しを発行すると: entityManager.find(Customer.class, customerID); この呼び出しのSQLクエリを確認するにはどうすればよいですか?呼び出しをプロファイル/監視するデータベースサーバーにアクセスできない場合、IDE内でJPA呼び出しによって発行された対応するSQLクエリを記録または表示する方法はありますか?jTDSドライバーを使用してSQL Server 2008 R2に反対します。
155 java  jpa 

7
getOneおよびfindOneメソッドを使用する場合、Spring Data JPA
私はそれが以下を呼び出すユースケースを持っています: @Override @Transactional(propagation=Propagation.REQUIRES_NEW) public UserControl getUserControlById(Integer id){ return this.userControlRepository.getOne(id); } 観察し@TransactionalているPropagation.REQUIRES_NEWとリポジトリの用途にgetoneを。アプリを実行すると、次のエラーメッセージが表示されます。 Exception in thread "main" org.hibernate.LazyInitializationException: could not initialize proxy - no Session ... しかし、私が変更した場合getOne(id)、findOne(id)すべて正常に動作します。 ところで、ユースケースがgetUserControlByIdメソッドを呼び出す直前に、それはすでにinsertUserControlメソッドを呼び出しています @Override @Transactional(propagation=Propagation.REQUIRES_NEW) public UserControl insertUserControl(UserControl userControl) { return this.userControlRepository.save(userControl); } 単純な監査制御を行っているため、どちらの方法もPropagation.REQUIRES_NEWです。 getOneメソッドはJpaRepositoryインターフェースで定義されており、Repositoryインターフェースはそこから拡張されているため、私はこのメソッドを使用しています。もちろん、JPAを使用しています。 JpaRepositoryインターフェースから延びCrudRepository。findOne(id)方法は、で定義されていますCrudRepository。 私の質問は: なぜgetOne(id)メソッドが失敗するのですか? いつgetOne(id)メソッドを使用する必要がありますか? 私は他のリポジトリを使用していますが、すべてこのgetOne(id)方法を使用しており、すべて正常に機能します。Propagation.REQUIRES_NEWを使用した場合にのみ失敗します。 getOne APIによると: 指定された識別子を持つエンティティへの参照を返します。 findOne APIによると: エンティティをIDで取得します。 3)いつfindOne(id)メソッドを使用する必要がありますか? …

4
JPA @Columnアノテーションを参照して、insertable = falseおよびupdatable = falseについて説明してください
フィールドに注釈が付けられている場合、insertable=false, updatable=false値を挿入したり、既存の値を変更したりできないということではありませんか?なぜそれをしたいのですか? @Entity public class Person { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; @OneToMany(mappedBy="person", cascade=CascadeType.ALL) private List&lt;Address&gt; addresses; } @Entity public class Address { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; @ManyToOne @JoinColumn(name="ADDRESS_FK") @Column(insertable=false, updatable=false) private Person person; }

14
いつ、なぜJPAエンティティはSerializableインターフェースを実装する必要がありますか?
質問はタイトルにあります。以下では、私の考えと調査結果のいくつかを説明しました。 私が非常に単純なドメインモデル(リレーションなしの3つのテーブル)を持っている場合、すべてのエンティティがSerializableを実装していませんでした。 しかし、ドメインモデルがより複雑になると、RuntimeExceptionが発生し、私のエンティティの1つがSerializableを実装していないと言われました。 JPA実装としてHibernateを使用しています。 私は疑問に思う: ベンダー固有の要件/動作ですか? シリアル化可能なエンティティはどうなりますか?保存または転送のためにシリアライズ可能にする必要がありますか? エンティティをシリアル化できるようにする必要があるのはいつですか。

29
指定されたEntityManagerの永続性プロバイダーがありません
私はディレクトリの下でpersistence.xml同じ名前を使用TopLinkしていMETA-INFます。それから、私はそれを呼び出すコードを持っています: EntityManagerFactory emfdb = Persistence.createEntityManagerFactory("agisdb"); それでも、次のエラーメッセージが表示されました。 2009-07-21 09:22:41,018 [メイン]エラー-agisdbという名前のEntityManagerの永続性プロバイダーがありません javax.persistence.PersistenceException:agisdbという名前のEntityManagerの永続性プロバイダーがありません javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:89)で javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:60)で ここにありますpersistence.xml: &lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0"&gt; &lt;persistence-unit name="agisdb"&gt; &lt;class&gt;com.agis.livedb.domain.AddressEntity&lt;/class&gt; &lt;class&gt;com.agis.livedb.domain.TrafficCameraEntity&lt;/class&gt; &lt;class&gt;com.agis.livedb.domain.TrafficPhotoEntity&lt;/class&gt; &lt;class&gt;com.agis.livedb.domain.TrafficReportEntity&lt;/class&gt; &lt;properties&gt; &lt;property name="toplink.jdbc.url" value="jdbc:mysql://localhost:3306/agisdb"/&gt; &lt;property name="toplink.jdbc.driver" value="com.mysql.jdbc.Driver"/&gt; &lt;property name="toplink.jdbc.user" value="root"/&gt; &lt;property name="toplink.jdbc.password" value="password"/&gt; &lt;/properties&gt; &lt;/persistence-unit&gt; &lt;/persistence&gt; クラスパスにあるはずです。それでも、上記のエラーが発生しました。
148 java  jpa  persistence  toplink 

7
Spring ControllerでJPAおよびHibernateとのFetchType.LAZY関連付けをフェッチする方法
私はPersonクラスを持っています: @Entity public class Person { @Id @GeneratedValue private Long id; @ManyToMany(fetch = FetchType.LAZY) private List&lt;Role&gt; roles; // etc } 怠惰な多対多の関係で。 私のコントローラーには @Controller @RequestMapping("/person") public class PersonController { @Autowired PersonRepository personRepository; @RequestMapping("/get") public @ResponseBody Person getPerson() { Person person = personRepository.findOne(1L); return person; } } そして、PersonRepositoryはこのガイドに従って書かれたまさにこのコードです public interface PersonRepository extends …

14
特定の列を選択するSpring JPA
Spring JPAを使用してすべてのデータベース操作を実行しています。しかし、Spring JPAのテーブルから特定の列を選択する方法がわかりませんか? 例えば: SELECT projectId, projectName FROM projects

3
JPAとSpring Data JPAの違いは何ですか?
Spring Data-JPAとJPAの違いについて少し混乱しています。JPAについては、人気のORMテクノロジーを使用してJavaオブジェクトをリレーショナルデータベースに永続化するための仕様であることを知っています。 言い換えれば、JPAはインターフェースやその他のORMテクノロジーを提供し、JPAプロバイダー(Hibernateなど)として知られるインターフェースを実装します。 さて、Spring Data JPAとは正確には何ですか? Spring Data JPAはJPAを介していくつかの機能(インターフェース)を追加しましたが、それでも指定されているだけですか、それともJPAプロバイダーでもありますか? Spring Data JPAがリポジトリー(DAOレイヤー:私が間違っていない場合)を回避するのを見ました。つまり、「Spring Data JPA + Hibernate」を使用する場合と「Hibernate」指示のみを使用する場合とではどのように違うのでしょうか。


18
Hibernate JPAシーケンス(非ID)
識別子ではない/複合識別子の一部ではない一部の列にDBシーケンスを使用することは可能ですか? 私はjpaプロバイダーとしてhibernateを使用しており、(シーケンスを使用して)生成された値であるいくつかの列を持つテーブルがありますが、それらは識別子の一部ではありません。 私が欲しいのは、シーケンスの列が主キー(の一部)ではないエンティティの新しい値を作成するためにシーケンスを使用することです。 @Entity @Table(name = "MyTable") public class MyEntity { //... @Id //... etc public Long getId() { return id; } //note NO @Id here! but this doesn't work... @GeneratedValue(strategy = GenerationType.AUTO, generator = "myGen") @SequenceGenerator(name = "myGen", sequenceName = "MY_SEQUENCE") @Column(name = "SEQ_VAL", unique = false, nullable = …
138 java  hibernate  jpa  sequence 

17
春のブーツ-管理されたタイプではありません
Spring boot + JPAを使用していますが、サービスの開始中に問題が発生しました。 Caused by: java.lang.IllegalArgumentException: Not an managed type: class com.nervytech.dialer.domain.PhoneSettings at org.hibernate.jpa.internal.metamodel.MetamodelImpl.managedType(MetamodelImpl.java:219) at org.springframework.data.jpa.repository.support.JpaMetamodelEntityInformation.&lt;init&gt;(JpaMetamodelEntityInformation.java:68) at org.springframework.data.jpa.repository.support.JpaEntityInformationSupport.getMetadata(JpaEntityInformationSupport.java:65) at org.springframework.data.jpa.repository.support.JpaRepositoryFactory.getEntityInformation(JpaRepositoryFactory.java:145) at org.springframework.data.jpa.repository.support.JpaRepositoryFactory.getTargetRepository(JpaRepositoryFactory.java:89) at org.springframework.data.jpa.repository.support.JpaRepositoryFactory.getTargetRepository(JpaRepositoryFactory.java:69) at org.springframework.data.repository.core.support.RepositoryFactorySupport.getRepository(RepositoryFactorySupport.java:177) at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.initAndReturn(RepositoryFactoryBeanSupport.java:239) at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.afterPropertiesSet(RepositoryFactoryBeanSupport.java:225) at org.springframework.data.jpa.repository.support.JpaRepositoryFactoryBean.afterPropertiesSet(JpaRepositoryFactoryBean.java:92) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1625) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1562) これがApplication.javaファイルです。 @Configuration @ComponentScan @EnableAutoConfiguration(exclude = { DataSourceAutoConfiguration.class }) @SpringBootApplication public class DialerApplication { …

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.