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

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

16
Spring Data JPA-「タイプのプロパティが見つかりません」例外
さて、私はグーグルを検索して多くの結果を見つけましたが、どれも私の問題に答えることができませんでした。だから、ここに行きます。 私はpinterest cloneの最小限の実装を行うことでSpring MVCとSpring Data JPAを研究しようとしています。だから、以下は私の問題に関連すると私が思うコードの部分です。 モデル/エンティティ @Entity @Table(name = "pin_item") public class PinItem implements Serializable { // properties ... @JoinColumn(name = "board_id", referencedColumnName = "user_board_id") @ManyToOne(optional = false) private UserBoard board; // getters and setters... } @Entity @Table(name = "user_board") public class UserBoard implements Serializable { // properties ... …

1
spring.jpa.hibernate.ddl-autoプロパティは、Springで正確にどのように機能しますか?
Springブートアプリプロジェクトで作業していたところ、別のサーバー(SQL Server)上のデータベースへの接続タイムアウトエラーが発生することがありました。これは、スクリプトの移行を試みたときに特に発生しますFlyWayが、数回試行しても機能します。 次にspring.jpa.hibernate.ddl-auto、プロパティファイルで指定していないことに気付きました 。私はいくつかの調査を行いspring.jpa.hibernate.ddl-auto= create-drop、開発に追加することが推奨されていることを発見しました 。そして、それを次のように変更しspring.jpa.hibernate.ddl-auto= noneます。 しかし、実際にはどのように機能するのcreate-dropか、またはhibernateがor none値を使用してデータベーススキーマをどのように生成するのかは、実際にはわかりませんでした。それが実際にどのように機能するか、およびこのプロパティを開発および運用サーバーで使用するための推奨事項を技術的に説明できますか?ありがとうございました

4
JPAクエリへのIN句リストの追加
次のようなNamedQueryを作成しました。 @NamedQuery(name = "EventLog.viewDatesInclude", query = "SELECT el FROM EventLog el WHERE el.timeMark >= :dateFrom AND " + "el.timeMark <= :dateTo AND " + "el.name IN (:inclList)") 私がやりたいことは、パラメーター:inclListに、1つのアイテムではなくアイテムのリストを入力することです。たとえばnew List<String>() { "a", "b", "c" }、:inclListパラメータでそれを取得するにはどうすればよいですか?コード化できるのは1つの文字列だけです。例えば: setParameter("inclList", "a") // works setParameter("inclList", "a, b") // does not work setParameter("inclList", "'a', 'b'") // does …
124 java  jpa  jpql 

9
Spring Boot + JPA:列名アノテーションは無視されました
依存関係のあるSpring Bootアプリケーションがありますspring-boot-starter-data-jpa。私のエンティティクラスには、列名の付いた列注釈があります。例えば: @Column(name="TestName") private String testName; これによって生成されたSQLはtest_name、列名として作成されます。解決策を探した後spring.jpa.hibernate.naming_strategy=org.hibernate.cfg.EJB3NamingStrategy、問題を解決したことがわかりました(列名は列注釈から取得されます)。 それでも、私の質問は、naming_strategyをEJB3NamingStrategyJPAに設定しないと列の注釈が無視されるのはなぜですか?冬眠の方言は何か関係があるのでしょうか?MS SQL 2014 Expressに接続していますが、ログには次のものが含まれています。 Unknown Microsoft SQL Server major version [12] using SQL Server 2000 dialect Using dialect: org.hibernate.dialect.SQLServerDialect

2
Spring Bootのこのspring.jpa.open-in-view = trueプロパティとは何ですか?
spring.jpa.open-in-view=trueSpring BootのドキュメントでJPA構成のプロパティを見ました。 でtrue、それがすべてで提供されていない場合、このプロパティのデフォルト値は?; これは実際に何をしますか?私はそれについての良い説明を見つけることができませんでした。 SessionFactory代わりに使用させEntityManagerFactoryますか?はいの場合、EntityManagerFactory代わりに使用できるようにするにはどうすればよいですか? ありがとう!


4
JPAとHibernateのpersist()とmerge()の違いは何ですか?
Hibernateのpersist()とmerge()の違いは何ですか? persist() UPDATE&INSERTクエリを作成できます。例: SessionFactory sef = cfg.buildSessionFactory(); Session session = sef.openSession(); A a=new A(); session.persist(a); a.setName("Mario"); session.flush(); この場合、クエリは次のように生成されます。 Hibernate: insert into A (NAME, ID) values (?, ?) Hibernate: update A set NAME=? where ID=? そのため、persist()メソッドは挿入と更新を生成できます。 今とmerge(): SessionFactory sef = cfg.buildSessionFactory(); Session session = sef.openSession(); Singer singer = new Singer(); singer.setName("Luciano …
119 java  hibernate  jpa  orm  entity 

4
JPAとJDBCの違いは何ですか?
私はJava EEを学習しています。同じためにGlassfishを使用してEclipseをダウンロードしました。Java EE 5のすべてを知るためにいくつかの例を見たり、Oracleのドキュメントを読んだりしました。データベースへの接続は非常に簡単でした。動的Webプロジェクトを開き、セッションEJBを作成し、EntityManagerを使用して、getメソッドを使用して、格納されたデータテーブルにアクセスできました。 次のプロジェクトでは、単純なクラスを作成し、DBテーブルにアクセスしました。私が遭遇した最初の問題は、PersistenceUnit属性がEJB、サーブレットなどによってのみ認識され、単純なJavaクラスでは認識されないことでした。それで、私はEntityManager方法を使用できませんでした(または私はできますか?) 「JDBC」の方法で行くように頼まれました。私が遭遇した最初の問題は、DBへの接続を取得することでした。これはすべてハードコーディングする必要があるようです。データベース接続を簡単に構成できるpersistence.xmlがありました。DB用のドライバーのセットアップも簡単でした。また、JDBCには、テーブルエンティティにアクセスするためのget / setメソッドはありません。 JDBCとの関係でJPAと永続性を理解するにはどうすればよいですか?JPAは何を考えていましたか?なぜset / getメソッドがあるのですか?誰かがこれら2つの本質に光を当てることはできますか?「専門用語」のない賛否両論は何ですか?リンクもいくつか提案してください。JPAとJDBCの違いをGoogleで簡単に検索したところ、フォローできない「用語」に満ちたサイトがいくつか見つかりました:(
119 java  jpa  jdbc 

5
Java-JPA-@Versionアノテーション
@VersionJPAでアノテーションはどのように機能しますか? 私は次のように抽出されたさまざまな答えを見つけました: JPAはエンティティのバージョンフィールドを使用して、同じデータストアレコードに対する同時変更を検出します。JPAランタイムは、同じレコードを同時に変更する試みを検出すると、最後にコミットしようとしたトランザクションに例外をスローします。 しかし、それがどのように機能するかはまだわかりません。 次の行からも: バージョンフィールドは不変と見なす必要があります。フィールド値を変更すると、未定義の結果が生じます。 バージョンフィールドを次のように宣言する必要があるという意味finalですか?

6
Hibernate、@ SequenceGenerator、allocationSize
使用時のHibernateのデフォルトの動作は誰でも知っています@SequenceGenerator-実際のデータベースシーケンスを1増やし、この値を50(デフォルトallocationSize値)倍します-そして、この値をエンティティIDとして使用します。 これは不正な動作であり、次の仕様と競合します。 allocationSize-(オプション)シーケンスからシーケンス番号を割り当てるときに増分する量。 明確にするために:生成されたID間のギャップについては気にしません。 基になるデータベースシーケンスと一致しない IDに関心があります。たとえば、他のアプリケーション(プレーンなJDBCを使用するなど)は、シーケンスから取得したIDの下に新しい行を挿入したい場合がありますが、これらの値はすべてHibernateですでに使用されている場合があります。狂気。 誰かがこの問題の解決策を知っていますか(設定allocationSize=1してパフォーマンスを低下させることなく)? 編集: 物事を明確にするために。最後に挿入されたレコードにID =があった1場合、HBは51, 52, 53...新しいエンティティの値を同時に使用しますが、データベース内のシーケンスの値はに設定され2ます。これは、他のアプリケーションがそのシーケンスを使用しているときに簡単にエラーにつながる可能性があります。 反対に、仕様では、(私の理解では)データベースシーケンスが設定されている必要が51あり、その間HBは範囲の値を使用する必要があると述べています 2, 3 ... 50 更新: Steve Ebersoleが以下で述べたように:私が説明した動作(および多くの人にとって最も直感的な動作)は、を設定することで有効にできますhibernate.id.new_generator_mappings=true。 皆さんに感謝します。 更新2: 将来の読者のために、実際の例を以下に示します。 @Entity @Table(name = "users") public class User { @Id @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "USERS_SEQ") @SequenceGenerator(name = "USERS_SEQ", sequenceName = "SEQUENCE_USERS") private Long id; } persistence.xml <persistence-unit …
117 java  hibernate  jpa  hilo 


27
クラスパスリソースで定義された 'entityManagerFactory'という名前のBeanの作成エラー:initメソッドの呼び出しに失敗しました
Springプロジェクトをコンパイルすると、次のエラーが発生しました。 クラスパスリソース[org / springframework / boot / autoconfigure / orm / jpa / HibernateJpaAutoConfiguration.class]で定義された「entityManagerFactory」という名前のBeanの作成エラー:initメソッドの呼び出しに失敗しました STS EclipseとMySqlデータベースを使用しています 私の接続文字列Application.Propertiesは spring.datasource.url=jdbc:mysql://localhost:3306/stgdb spring.datasource.username=root spring.datasource.password=root spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.jpa.hibernate.ddl-auto=update 詳細なエラーは以下のとおりです ================================================= 2016-10-15 15:34:38.875[0;39m [31mERROR[0;39m [35m3700[0;39m [2m---[0;39m [2m[ main][0;39m [36mo.s.boot.SpringApplication [0;39m [2m:[0;39m Application startup failed org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaAutoConfiguration.class]: …

9
Spring Data JPA GROUP BYクエリからカスタムオブジェクトを返す方法
Spring Data JPAを使用してSpring Bootアプリケーションを開発しています。カスタムJPQLクエリを使用して、いくつかのフィールドでグループ化し、カウントを取得しています。以下は私のリポジトリメソッドです。 @Query(value = "select count(v) as cnt, v.answer from Survey v group by v.answer") public List<?> findSurveyCount(); 動作しており、結果は次のように取得されます。 [ [1, "a1"], [2, "a2"] ] 私はこのようなものを手に入れたいです: [ { "cnt":1, "answer":"a1" }, { "cnt":2, "answer":"a2" } ] どうすればこれを達成できますか?

15
JPA:大きな結果セットを反復するための適切なパターンは何ですか?
数百万行のテーブルがあるとしましょう。JPAを使用して、そのテーブルに対するクエリを反復処理する適切な方法は何ですか?何百万ものオブジェクトを持つすべてのメモリ内リストがないのはなぜですか? たとえば、テーブルが大きい場合は、次のようになると思います。 List<Model> models = entityManager().createQuery("from Model m", Model.class).getResultList(); for (Model model : models) { System.out.println(model.getId()); } ページネーション(ループと手動更新setFirstResult()/ setMaxResult())は本当に最善の解決策ですか? 編集:私が対象としている主なユースケースは、一種のバッチジョブです。実行に時間がかかる場合は問題ありません。関連するWebクライアントはありません。一度に1つ(またはいくつかの小さなN)の行ごとに「何かを行う」必要があります。私はそれらすべてが同時にメモリにあるのを避けようとしているだけです。
114 java  hibernate  jpa 

7
JPA-persist()の後に自動生成されたIDを返す
JPA(EclipseLink)とSpringを使用しています。自動生成されたIDを持つ単純なエンティティがあるとします。 @Entity public class ABC implements Serializable { @Id @GeneratedValue(strategy=GenerationType.IDENTITY) private int id; // ... } 私のDAOクラスには、persist()このエンティティを呼び出すinsertメソッドがあります。メソッドで新しいエンティティの生成されたIDを返したいのですが、テストすると、0代わりに返されます。 public class ABCDao { @PersistenceContext EntityManager em; @Transactional(readOnly=false) public int insertABC(ABC abc) { em.persist(abc); // I WANT TO RETURN THE AUTO-GENERATED ID OF abc // HOW CAN I DO IT? return abc.id; // …
113 java  jpa 

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