データベースアクセスにJPAを使用し、すべての列に正しい名前で注釈を付けました。クエリ(たとえば、findAll()
)を実行すると、
_Unknown column 'program0_.program_id' in 'field list'
_
エラーメッセージは正しい_program_id
_は、実際の名前がprogramId
であるため不明です。
モデル:プログラム
_ @Entity
@Table(name = "programs")
@XmlRootElement
public class Program implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "programId")
private Long programId;
@ManyToMany
@JoinTable(
name = "programlabels",
joinColumns = {
@JoinColumn(name = "program", referencedColumnName = "programId")},
inverseJoinColumns = {
@JoinColumn(name = "label", referencedColumnName = "labelId")})
private Collection<Label> labels;
}
_
ラベル
_@Entity
@Table(name = "labels")
@XmlRootElement
public class Label implements Serializable {
@Id
@Basic(optional = false)
@NotNull
@Size(min = 1, max = 100)
@Column(name = "labelId")
private String labelId;
}
_
クエリ
_select program0_.program_id as program_1_5_, ...
_
JPAが「programId」を「program_id」に変更する理由、または構成が欠落している理由はありますか?
ありがとう
編集:申し訳ありませんが、クエリコード/情報を追加するのを忘れてしまいました。
Spring DataのJpaRepository
インターフェイスを使用して、findAll()
クエリを試しました。
_@Repository
public interface ProgramRepository extends JpaRepository<Program, Long> {}
_
spring-boot-jpa-column-name-annotation-ignored で説明されているように、列名はスネークケースに変換されています。
可能な解決策:
http://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html
spring.jpa.hibernate.naming.strategyは、Hibernate 5を使用したSpring JPA実装でサポートされているプロパティではありません。
application.properties
で以下のプロパティを使用します
spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
@ Column(name = "PersonFullName")
プライベート文字列PersonFullName;
データベーステーブルの列名「PersonFullName」にアンダースコアなし.
以下は私のために働いた。これをアプリケーション設定に追加し、@ Columnを使用して、モデルのプロパティの物理データベース列名を指定します。
@ Column(name = "PersonFullName")
Application.propertiesで
spring.jpa.hibernate.naming.implicit-strategy = org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyJpaImpl spring.jpa.hibernate.naming.physical-strategy = org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl