Java id为自动递增使用@GeneratedValue注释如果与PostgreSQL不同,则使用此注释,其中name_seq为序列名
,实体Java id为自动递增使用@GeneratedValue注释如果与PostgreSQL不同,则使用此注释,其中name_seq为序列名,java,database,hibernate,jpa,Java,Database,Hibernate,Jpa,,实体 @Id @GeneratedValue(strategy=GenerationType.AUTO) private int filmId; @Column(name="title") private String title; @Column(name="description") private String Description; @Column(name="release_year") private Str
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private int filmId;
@Column(name="title")
private String title;
@Column(name="description")
private String Description;
@Column(name="release_year")
private String releaseYear;
@NaturalId
private int languageId;
@NaturalId
@Column(name="original_languageId", nullable=true)
private Integer originalLanguageId;
@Column(name="rental_duration")
private int rentalDuration;
@Column(name="rental_rate")
private float rentalRate;
@Column(name="length")
private int length;
@Column(name="replacement_cost")
private float replacementCost;
@Column
private String rating;
@Column(name="special_features")
private String specialFeatures;
@Column(name="last_update")
private Timestamp lastUpdate;
您应该测试
文件
类中的属性是否类似于租金
而不是租金
所以在JPA中,我们使用类中的属性名称,而不是数据库中的列名称
@Column
注释,您可以使用与java约定相关的任何名称并在JPA中使用它@GeneratedValue
注释如果与PostgreSQL不同,请使用此注释,其中name_seq
是序列名 @Id
@GeneratedValue(strategy=GenerationType.AUTO)
private int filmId;
@Column(name="title")
private String title;
@Column(name="description")
private String Description;
@Column(name="release_year")
private String releaseYear;
@NaturalId
private int languageId;
@NaturalId
@Column(name="original_languageId", nullable=true)
private Integer originalLanguageId;
@Column(name="rental_duration")
private int rentalDuration;
@Column(name="rental_rate")
private float rentalRate;
@Column(name="length")
private int length;
@Column(name="replacement_cost")
private float replacementCost;
@Column
private String rating;
@Column(name="special_features")
private String specialFeatures;
@Column(name="last_update")
private Timestamp lastUpdate;
电影中是否有名为
rental\u rate
的属性?@sc0der文件是什么意思?我指的是电影实体,类中名为rental\u rate
的属性是否存在?是的,我在DB上测试了查询,结果正常。我只是不明白为什么它不在代码中。可能是hibernate中硬编码的东西?我知道DB col可能被称为rental\u rate
,但在课堂上你是像rentalRate
或rental\u rate
那样声明的吗?你在电影中有名为rental\u rate
的属性吗?@sc0der你所说的文件是什么意思?我指的是电影实体,类中名为rental\u rate
的属性是否存在?是的,我在DB上测试了查询,结果正常。我只是不明白为什么它不在代码中。可能是hibernate中硬编码的东西?我知道DB col可能被称为rental\u rate
,但在课堂上你是否像rentalRate
或rental\u rate
一样声明了它,我知道并测试了其他查询和工作。这一个给我带来了未知的实体你能在你的问题中加入Film
class吗好的,所以DB中的列在单词之间使用下划线,比如“租金”?是的,这一列和另一列我也需要。我不能更改他们的名字。我知道并测试其他查询和工作。这一个给我带来了未知的实体你能在你的问题中加入Film
class吗好的,所以DB中的列在单词之间使用下划线,比如“租金”?是的,这一列和另一列我也需要。我不能改变他们的名字。
Caused by: org.hibernate.HibernateException: Errors in named queries: Film.prices
@Entity
@Table(name="film")
@NamedQueries({
@NamedQuery(name = "Film.findAll", query = "SELECT f FROM Film f")
,@NamedQuery(name = "Film.findById", query = "SELECT f FROM Film f WHERE f.filmId=:filmId")
,@NamedQuery(name = "Film.ratings", query = "SELECT f.rating FROM Film f")
//,@NamedQuery(name = "Film.prices", query = "SELECT f.rental_rate FROM Film f")
})
@NamedNativeQueries({
@NamedNativeQuery(name = "Film.prices", query = "SELECT f.rental_rate FROM Film f")
})
Caused by: org.hibernate.MappingException: Unknown entity: java.lang.String
@Entity
@Table(name="film")
@NamedQueries({
@NamedQuery(name = "Film.findAll", query = "SELECT f FROM Film f")
,@NamedQuery(name = "Film.findById", query = "SELECT f FROM Film f WHERE f.filmId=:filmId")
,@NamedQuery(name = "Film.ratings", query = "SELECT f.rating FROM Film f")
,@NamedQuery(name = "Film.prices", query = "SELECT f.rentalRate FROM Film f")
})
/*@NamedNativeQueries({
@NamedNativeQuery(name = "Film.prices", query = "SELECT f.rentalRate FROM Film f")
})*/
public class Film implements Serializable{
@Id
private int filmId;
private String title;
private String Description;
private String releaseYear;
@NaturalId
private int languageId;
@NaturalId
@Column(nullable=true)
private Integer originalLanguageId;
private int rentalDuration;
private float rentalRate;
private int length;
private float replacementCost;
private String rating;
private String specialFeatures;
private Timestamp lastUpdate;
@ManyToMany(cascade = CascadeType.ALL , fetch = FetchType.EAGER)
@JoinTable(
name = "film_category",
joinColumns = { @JoinColumn(name = "film_id") },
inverseJoinColumns = { @JoinColumn(name = "category_id") }
)
private Set<Category> categories = new HashSet<Category>();
@ManyToMany(cascade = CascadeType.ALL , fetch = FetchType.EAGER)
@JoinTable(
name = "inventory",
joinColumns = { @JoinColumn(name = "film_id") },
inverseJoinColumns = { @JoinColumn(name = "inventory_id") }
)
private List<Store> stores = new ArrayList<Store>();
public int getFilmId() {
return filmId;
}
public void setFilmId(int filmId) {
this.filmId = filmId;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getDescription() {
return Description;
}
public void setDescription(String Description) {
this.Description = Description;
}
public String getReleaseYear() {
return releaseYear;
}
public void setReleaseYear(String releaseYear) {
this.releaseYear = releaseYear;
}
public int getLanguageId() {
return languageId;
}
public void setLanguageId(int languageId) {
this.languageId = languageId;
}
public int getOriginalLanguageId() {
return originalLanguageId;
}
public void setOriginalLanguageId(int originalLanguageId) {
this.originalLanguageId = originalLanguageId;
}
public int getRentalDuration() {
return rentalDuration;
}
public void setRentalDuration(int rentalDuration) {
this.rentalDuration = rentalDuration;
}
public float getRentalRate() {
return rentalRate;
}
public void setRentalRate(float rentalRate) {
this.rentalRate = rentalRate;
}
public int getLenght() {
return length;
}
public void setLenght(int lenght) {
this.length = lenght;
}
public float getReplacementCost() {
return replacementCost;
}
public void setReplacementCost(float replacementCost) {
this.replacementCost = replacementCost;
}
public String getRating() {
return rating;
}
public void setRating(String rating) {
this.rating = rating;
}
public String getSpecialFeatures() {
return specialFeatures;
}
public void setSpecialFeatures(String specialFeatures) {
this.specialFeatures = specialFeatures;
}
public int getLength() {
return length;
}
public void setLength(int length) {
this.length = length;
}
public Timestamp getLastUpdate() {
return lastUpdate;
}
public void setLastUpdate(Timestamp lastUpdate) {
this.lastUpdate = lastUpdate;
}
public void setCategories(Set<Category> categories) {
this.categories = categories;
}
public Set<Category> getCategories() {
return this.categories;
}
public List<Store> getStores() {
return stores;
}
public void setStores(List<Store> stores) {
this.stores = stores;
}
@Override
public String toString() {
return "Film{" + "filmId=" + filmId + ", title=" + title + ", Description=" + Description + ", releaseYear=" + releaseYear + ", languageId=" + languageId + ", originalLanguageId=" + originalLanguageId + ", rentalDuration=" + rentalDuration + ", rentalRate=" + rentalRate + ", length=" + length + ", replacementCost=" + replacementCost + ", rating=" + rating + ", specialFeatures=" + specialFeatures + ", lastUpdate=" + lastUpdate + ", categories=" + categories + '}';
}
}
@SequenceGenerator(name="name_seq",
sequenceName="name_seq",
allocationSize=1)
@GeneratedValue(strategy = GenerationType.SEQUENCE,
generator="name_seq")
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private int filmId;
@Column(name="title")
private String title;
@Column(name="description")
private String Description;
@Column(name="release_year")
private String releaseYear;
@NaturalId
private int languageId;
@NaturalId
@Column(name="original_languageId", nullable=true)
private Integer originalLanguageId;
@Column(name="rental_duration")
private int rentalDuration;
@Column(name="rental_rate")
private float rentalRate;
@Column(name="length")
private int length;
@Column(name="replacement_cost")
private float replacementCost;
@Column
private String rating;
@Column(name="special_features")
private String specialFeatures;
@Column(name="last_update")
private Timestamp lastUpdate;
@Entity
@Table(name="film")
@NamedQueries({
@NamedQuery(name = "Film.findAll", query = "SELECT f FROM Film f")
,@NamedQuery(name = "Film.findById", query = "SELECT f FROM Film f WHERE f.filmId=:filmId")
,@NamedQuery(name = "Film.ratings", query = "SELECT f.rating FROM Film f")
,@NamedQuery(name = "Film.prices", query = "SELECT f.rentalRate FROM Film f")
})