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

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

2
データベースに関してREFRESHとMERGEはどういう意味ですか?
私は好奇心が強いので、この答えをすばやく見つける必要があります。Googleはあまり役に立ちません。 Java Persistence APIには、関連するエンティティで操作をカスケードするようにフレームワークに指示する次のプロパティがあります。 CascadeType.PERSIST CascadeType.DELETE CascadeType.MERGE CascadeType.REFRESH 最初の2つの意味はわかっています。Bを持つオブジェクトAを永続化すると、Bも永続化され、Aを削除すると、Bも削除されます。 しかし、私は他の2人が何を成し遂げているのか理解できません。助けて?
94 java  jpa  persistence 

9
LIKEを使用したSpring JPA @Query
CrudRepositoryでメソッドを作成して、ユーザー名が入力パラメーターのようなユーザー名のリストを提供できるようにしています(最初だけでなく、それを含む)。私はメソッドを使用しようとし"findUserByUsernameLike(@Param("username") String username)"ましたが、Springのドキュメントに記載されているように、このメソッドは " where user.username like ?1" と同じです。ユーザー名が含まれているすべてのユーザーを取得しようとしているとすでに言ったので、それは私にとっては良くありません... メソッドへのクエリを作成しましたが、デプロイされません。 @Repository public interface UserRepository extends CrudRepository<User, Long> { @Query("select u from user u where u.username like '%username%'") List<User> findUserByUsernameLike(@Param("username") String username); } 誰かがこれを手伝ってくれる?
93 java  jquery  sql  spring  jpa 

8
ロールバックのみとしてマークされたトランザクション:原因を見つける方法
@Transactionalメソッド内でトランザクションをコミットすることに問題があります。 methodA() { methodB() } @Transactional methodB() { ... em.persist(); ... em.flush(); log("OK"); } methodA()からmethodB()を呼び出すと、メソッドが正常に渡され、ログに「OK」と表示されます。しかし、私は得る Could not commit JPA transaction; nested exception is javax.persistence.RollbackException: Transaction marked as rollbackOnly org.springframework.transaction.TransactionSystemException: Could not commit JPA transaction; nested exception is javax.persistence.RollbackException: Transaction marked as rollbackOnly at org.springframework.orm.jpa.JpaTransactionManager.doCommit(JpaTransactionManager.java:521) at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:754) at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:723) at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:393) …

6
列挙型のJPAマップコレクション
JPAにEntityクラス内の列挙型のコレクションをマップする方法はありますか?または、唯一の解決策は、列挙型を別のドメインクラスでラップし、それを使用してコレクションをマップすることですか? @Entity public class Person { public enum InterestsEnum {Books, Sport, etc... } //@??? Collection<InterestsEnum> interests; } 私はHibernateJPA実装を使用していますが、もちろん実装にとらわれないソリューションを好みます。
92 java  jpa  jakarta-ee 

7
名前がJPAの予約語であるエンティティフィールドをマップする方法
@Column(name="open") Hibernateでsqlserverダイアレクトを使用する。 [SchemaUpdate] Unsuccessful: create table auth_session (id numeric(19,0) identity not null, active tinyint null, creation_date datetime not null, last_modified datetime not null, maxidle int null, maxlive int null, open tinyint null, sessionid varchar(255) not null, user_id numeric(19,0) not null, primary key (id), unique (sessionid)) [SchemaUpdate] Incorrect syntax near the …

3
2つ以上のフィールドを組み合わせて検証するにはどうすればよいですか?
モデルの検証にJPA2.0 / Hibernate検証を使用しています。現在、2つのフィールドの組み合わせを検証する必要がある状況があります。 public class MyModel { public Integer getValue1() { //... } public String getValue2() { //... } } モデルは、とが両方の場合は無効getValue1()でgetValue2()ありnull、そうでない場合は有効です。 JPA 2.0 / Hibernateでこの種の検証を実行するにはどうすればよいですか?単純な@NotNullアノテーションでは、検証に合格するには、両方のゲッターがnull以外である必要があります。

8
Spring Data JPAでFetchModeが機能する仕組み
プロジェクトの3つのモデルオブジェクト(投稿の最後にあるモデルとリポジトリのスニペット)の間に関係があります。 私が呼び出すPlaceRepository.findByIdと、3つの選択クエリが実行されます。 ( "sql") SELECT * FROM place p where id = arg SELECT * FROM user u where u.id = place.user.id SELECT * FROM city c LEFT OUTER JOIN state s on c.woj_id = s.id where c.id = place.city.id これはかなり珍しい動作です(私にとって)。Hibernateのドキュメントを読んだ後、私が知る限り、常にJOINクエリを使用する必要があります。クラス(SELECTを追加したクエリ)にFetchType.LAZY変更し FetchType.EAGERた場合のクエリに違いはありません。Placeクラス(JOINを使用したクエリ)CityにFetchType.LAZY変更した 場合も同様ですFetchType.EAGER。 CityRepository.findById火の抑制を使用すると、2つの選択が行われます。 SELECT * FROM city c where …

10
JPA(および対応する結合テーブルの行)でManyToMany関係を持つエンティティを削除するにはどうすればよいですか?
GroupとUserの2つのエンティティがあるとしましょう。すべてのユーザーは多くのグループのメンバーになることができ、すべてのグループは多くのユーザーを持つことができます。 @Entity public class User { @ManyToMany Set<Group> groups; //... } @Entity public class Group { @ManyToMany(mappedBy="groups") Set<User> users; //... } グループを削除したいと思います(メンバーが多いとしましょう)。 問題は、あるグループでEntityManager.remove()を呼び出すと、JPAプロバイダー(私の場合はHibernate)が結合テーブルから行を削除せず、外部キーの制約のために削除操作が失敗することです。Userでremove()を呼び出すと、正常に機能します(これは、関係の所有側と関係があると思います)。 では、この場合、どうすればグループを削除できますか? 私が思いつく唯一の方法は、グループ内のすべてのユーザーをロードしてから、すべてのユーザーについて現在のグループをグループから削除し、ユーザーを更新することです。しかし、このグループを削除できるようにするためだけに、グループのすべてのユーザーに対してupdate()を呼び出すのはばかげているようです。
91 java  hibernate  jpa  orm 

6
Spring Data JPAは、ネイティブクエリ結果を非エンティティPOJOにマップします
ネイティブクエリを使用したSpringDataリポジトリメソッドがあります @Query(value = "SELECT g.*, gm.* FROM group g LEFT JOIN group_members gm ON g.group_id = gm.group_id and gm.user_id = :userId WHERE g.group_id = :groupId", nativeQuery = true) GroupDetails getGroupDetails(@Param("userId") Integer userId, @Param("groupId") Integer groupId); 結果を非エンティティPOJOにマップしたいと思いGroupDetailsます。 それは可能ですか?もしそうなら、例を挙げていただけますか?

8
LIKE句JPQLのパラメータ
like句を使用してJPQLクエリを記述しようとしています。 LIKE '%:code%' code = 4を見つけて見つけたい 455 554 646 ... 通れません :code = '%value%' namedQuery.setParameter("%" + this.value + "%"); 別の場所で:valueは%イワナに包まれる必要はないからです。何か助けは?

2
JPAアノテーションを使用して複数列制約を導入するにはどうすればよいですか?
JPAにマップされたエンティティにマルチキー制約を導入しようとしています: public class InventoryItem { @Id private Long id; @Version private Long version; @ManyToOne @JoinColumn("productId") private Product product; @Column(nullable=false); private long serial; } 基本的に(製品、シリアル)ペアは一意である必要がありますが、シリアルは一意であると言う方法を見つけました。異なる製品が同じシリアル番号を持っている可能性があるため、これは明らかに良い考えではありません。 JPAを介してこの制約を生成する方法はありますか、それとも手動でDBに作成する必要がありますか?
90 java  jpa  mapping 


4
@Entityおよび@TableのName属性
名前属性が@Entityと@Tableの両方にあるため、疑問があります。 たとえば、name属性に同じ値を設定できます @Entity(name = "someThing") @Table(name = "someThing") 同じクラスに異なる名前を付けることもできます @Entity(name = "someThing") @Table(name = "otherThing") これら2つの違いと、両方に同じ属性がある理由を誰かに教えてもらえますか?

4
JPAの複数の埋め込みフィールド
JPAエンティティクラスに2つの埋め込み(@Embedded)フィールドを含めることは可能ですか?例は次のとおりです。 @Entity public class Person { @Embedded public Address home; @Embedded public Address work; } public class Address { public String street; ... } この場合、aにPersonはAddress自宅と職場の2つのインスタンスを含めることができます。Hibernateの実装でJPAを使用しています。Hibernate Toolsを使用してスキーマを生成すると、1つしか埋め込まれませんAddress。私が欲しいのは、2つの埋め込みAddressインスタンスで、それぞれの列名が区別されるか、接頭辞(自宅や職場など)が前に付けられます。私は知っていますが@AttributeOverrides、これには各属性を個別にオーバーライドする必要があります。Address各列を個別にオーバーライドする必要があるため、埋め込みオブジェクト()が大きくなると、これは面倒になる可能性があります。

1
JPAの複数の固有の制約
JPAを使用して、異なる列のセットに複数の一意の制約があることを指定する方法はありますか? @Entity @Table(name="person", uniqueConstraints=@UniqueConstraint(columnNames={"code", "uid"})) public class Person { // Unique on code and uid public String code; public String uid; // Unique on username public String username; public String name; public String email; } Hibernate固有のアノテーションを見たことがありますが、Hibernateとdatanucleusのどちらを使用するかをまだ決定しているため、ベンダー固有のソリューションを避けようとしています。

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