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

HibernateはJava言語用のオブジェクトリレーショナルマッピング(ORM)ライブラリであり、開発者はアプリケーションでPOJOスタイルのドメインモデルをオブジェクト/リレーショナルマッピングをはるかに超える方法で利用できます。

3
追加の列を使用した多対多関連テーブルのマッピング
私のデータベースには3つのテーブルが含まれています。ユーザーエンティティとサービスエンティティは多対多の関係にあり、次のようにSERVICE_USERテーブルと結合されています。 ユーザー-SERVICE_USER-サービス SERVICE_USERテーブルには、追加のBLOCKED列が含まれています。 そのようなマッピングを実行する最良の方法は何ですか?これらは私のエンティティクラスです @Entity @Table(name = "USERS") public class User implements java.io.Serializable { private String userid; private String email; @Id @Column(name = "USERID", unique = true, nullable = false,) public String getUserid() { return this.userid; } .... some get/set methods } @Entity @Table(name = "SERVICES") public class CmsService implements …

26
Hibernate:「フィールド 'id'にはデフォルト値がありません」
私はHibernateの単純な問題だと思っていることに直面していますが、それを解決することはできません(Hibernateフォーラムにアクセスできないことは確かに役に立ちません)。 永続化したい単純なクラスがありますが、取得し続けます: SEVERE: Field 'id' doesn't have a default value Exception in thread "main" org.hibernate.exception.GenericJDBCException: could not insert: [hibtest.model.Mensagem] at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:103) at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:91) [ a bunch more ] Caused by: java.sql.SQLException: Field 'id' doesn't have a default value [ a bunch more ] 永続化クラスに関連するコードは次のとおりです。 package hibtest.model; import javax.persistence.Entity; import javax.persistence.GeneratedValue; …

3
Spring Data JPAは、大規模プロジェクトのHibernateとどう違うのですか?
新しいプロジェクトでHibernateを使い続けるべきか、それともJPAと新しいSpring Dataの実装で足を踏み入れるべきかを判断するのに苦労しています。 Spring Dataフレームワークは、大規模なプロジェクトを対象としていますか? @Query注釈を使用することによるコード削減の利点は確かにわかりますが、動的クエリに対して何をしますか?非常に複雑なsave()メソッドを実装する場合はどうでしょうか? ドキュメントには、メインリポジトリが実装するカスタムインターフェイスと実装を作成するように記載されていますが、クラッドリポジトリ自体のスーパーメソッドにアクセスする必要がある場合はどうでしょうか。crudリポジトリはカスタムのリポジトリを実装します-逆ではありません。奇妙なデザインのようです。 このフレームワークが複雑で大規模なアプリケーションの課題に対応できるかどうかは非常に不確かです。私はHibernateで多くの問題に遭遇したことがなく、Spring Data JPAを使用するのではなく、古き良き信頼性を維持することを検討しています。 私は何をすべきか?Spring Data JPAを使用すると、予期せぬ複雑さとコストが発生しますか?


13
EclipseにHibernateツールをインストールする方法
HibernateツールをプラグインとしてEclipseにインストールする適切な方法は何ですか?Hibernateのサイトは本当にすべての指示を与えるものではありません。 Hibernate Toolsバイナリを見ると、HibernateTools-3.2.4.Beta1-R200810311334.zipこれをeclipseディレクトリに解凍するだけでよいようです。私はそれを私のeclipseディレクトリに解凍しますか?これはインストールするのがハックだったようです。

2
ORMマッピングの「所有側」とは何ですか?
正確には何を所有している側の平均?マッピングの例(1対多、1対1、多対1)の説明は何ですか? 次のテキストは、Java EE 6ドキュメントの@OneToOneの説明からの抜粋です。そこにはコンセプトを所有する側のコンセプトが見られます。 1対1の多重度を持つ別のエンティティへの単一値の関連付けを定義します。通常、関連付けられているターゲットエンティティを明示的に指定する必要はありません。参照されるオブジェクトのタイプから推測できるためです。関係が双方向の場合、非所有側はOneToOneアノテーションのmappedBy要素を使用して、所有側の関係フィールドまたはプロパティを指定する必要があります。
128 java  hibernate  orm  jpa  mapping 

17
Hibernateエラー-QuerySyntaxException:ユーザーがマッピングされていません[ユーザーから]
「users」テーブルからすべてのユーザーのリストを取得しようとすると、次のエラーが発生します。 org.hibernate.hql.internal.ast.QuerySyntaxException: users is not mapped [from users] org.hibernate.hql.internal.ast.util.SessionFactoryHelper.requireClassPersister(SessionFactoryHelper.java:180) org.hibernate.hql.internal.ast.tree.FromElementFactory.addFromElement(FromElementFactory.java:110) org.hibernate.hql.internal.ast.tree.FromClause.addFromElement(FromClause.java:93) これは、ユーザーを追加/取得するために私が書いたコードです。 public List<User> getUsers() { Session session = HibernateUtil.getSessionFactory().getCurrentSession(); session.beginTransaction(); List<User> result = (List<User>) session.createQuery("from users").list(); session.getTransaction().commit(); return result; } public void addUser(User user) { Session session = HibernateUtil.getSessionFactory().getCurrentSession(); session.beginTransaction(); session.save(user); session.getTransaction().commit(); } public void addUser(List<User> users) { Session …
126 java  hibernate 

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値を使用してデータベーススキーマをどのように生成するのかは、実際にはわかりませんでした。それが実際にどのように機能するか、およびこのプロパティを開発および運用サーバーで使用するための推奨事項を技術的に説明できますか?ありがとうございました

8
SQL ServerのMaven依存関係のセットアップ
SQL ServerデータベースにHibernateでアクセスできるポートレットを開発しています。Mavenの依存関係を設定しました、MySqlが持っているのと同じ方法でSQL Serverコネクタを見つけようとします。 それでも、SQL Serverコネクタを検索した場合、私のGoogle検索ではMysqlしか表示されません。適切なmaven依存値は何ですか?

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

8
byte []の適切な休止状態アノテーション
hibernate 3.1およびJPAアノテーションを使用するアプリケーションがあります。これには、byte []属性を持つオブジェクトがいくつかあります(サイズが1k〜200k)。JPA @Lobアノテーションを使用し、Hibernate 3.1はすべての主要なデータベースでこれらを正常に読み取ることができます-JDBC Blobベンダーの特性を(本来のように)隠すようです。 @Entity public class ConfigAttribute { @Lob public byte[] getValueBuffer() { return m_valueBuffer; } } hibernate 3.5 がpostgresqlのこのアノテーションの組み合わせを回避する(そして修正しない)ことを発見したとき、3.5にアップグレードする必要がありました (回避策はありません)。今のところ明確な修正は見つかりませんでしたが、@ Lobを削除するだけでpostgresql型byteaが使用されていることに気付きました(これは機能しますが、postgresでのみ機能します)。 annotation postgres oracle works on ------------------------------------------------------------- byte[] + @Lob oid blob oracle byte[] bytea raw(255) postgresql byte[] + @Type(PBA) oid blob oracle byte[] + @Type(BT) …

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 

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 

8
Hibernate CriteriaはFetchType.EAGERで子を複数回返します
Orderリストのあるクラスがあり、次のOrderTransactionsように1対多のHibernateマッピングでマッピングしました。 @OneToMany(targetEntity = OrderTransaction.class, cascade = CascadeType.ALL) public List<OrderTransaction> getOrderTransactions() { return orderTransactions; } これらOrderのにorderStatusは、次の基準によるフィルタリングに使用されるフィールドもあります。 public List<Order> getOrderForProduct(OrderFilter orderFilter) { Criteria criteria = getHibernateSession() .createCriteria(Order.class) .add(Restrictions.in("orderStatus", orderFilter.getStatusesToShow())); return criteria.list(); } これは機能し、結果は期待どおりです。 さてここで、私の質問は:なぜ、私は明示的にフェッチ・タイプを設定したときにEAGER、やるOrder結果のリストにsが複数回表示されますか? @OneToMany(targetEntity = OrderTransaction.class, fetch = FetchType.EAGER, cascade = CascadeType.ALL) public List<OrderTransaction> getOrderTransactions() { return orderTransactions; } 新しい設定で同じ結果を得るには、どのように基準コードを変更する必要がありますか?
115 java  hibernate 


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