Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java id为自动递增使用@GeneratedValue注释如果与PostgreSQL不同,则使用此注释,其中name_seq为序列名_Java_Database_Hibernate_Jpa - Fatal编程技术网

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;  
  • 更新查询以匹配Film类中的属性名称,如下所示:

  • 您应该测试
    文件
    类中的属性是否类似于
    租金
    而不是
    租金

    所以在JPA中,我们使用类中的属性名称,而不是数据库中的列名称

  • 更新实体类并使用数据库中的名称使用
    @Column
    注释,您可以使用与java约定相关的任何名称并在JPA中使用它
  • 检查您的id是否为自动递增使用
    @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;  
    
  • 更新查询以匹配Film类中的属性名称,如下所示:


  • 电影中是否有名为
    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")
    })