entity类中用@ApiModelProperty注解啥意思?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了entity类中用@ApiModelProperty注解啥意思?相关的知识,希望对你有一定的参考价值。

@Entity 表示当前为实体类 @Id 主键 @GeneratedValue(strategy=GenerationType.UUID) 主键生成策略。 @Column 映射字段的定义,包括映射的数据库表的字段名称。是否允许为空。字段长度等等定义。

对java实体类的众多理解:

A .就是属性类,通常定义在model层里面 

B. 一般的实体类对应一个数据表,其中的属性对应数据表中的字段。

好处:

1.对对象实体的封装,体现OO思想。

2.属性可以对字段定义和状态进行判断和过滤

3.把相关信息用一个实体类封装后,我们在程序中可以把实体类作为参数传递,更加方便。

C. 说白了就是为了让程序员在对数据库操作的时候不用写SQL语句 

D. 就是一个数据库表生成一个类

这样做对数据库操作起来方便

编写代码较少 提高效率 可以使程序员专注逻辑关系 

E. 实体类就是把对某一个表的操作全写在一个类中.

F. 在Java开发中经常要定义一些实体类,这些类的定义的好坏会直接影响,编写代码的质量和难易程度,以下是别人总结的一些经验。

一、实体类的名字尽量和数据库的表的名字对应相同。

二、实体类应该实现java.io.Serializable接口。

三、实体类应该有个无参的构造方法。

四、实体类应该有个有参(所有的参数)的构造方法。

五、实体类有属性和方法,属性对应数据库中表的字段,主要有getter和setter方法。

六、实体类还应该有个属性serialVersionUID。例如:private static final long serialVersionUID = -6125297654796395674L;

七、属性一般是private类型,方法位public类型,对于数据库自动生成的ID字段对应的属性的set方法应为private。

G. 实体类中都是实例对象,实例对象在jvm的堆区中开辟了一个该对象引用空间,并且让该引用指向某个实例,类声明只是在jvm的栈去中开辟了一个该对象引用,没有让该引用做任何指向.

例如 :

1.String str;

2.String str = new String ("dgfgg");

1中的只是一个引用,说明str应该指向一个String 类型的实例,但还没对str和堆区的实例做具体的指向.也就是说它还没有指向某个实例.

而2中的即定义了一个引用(str)又对str做了具体的指向,它指向的内容就是后面new出来的String 实例.

实体类中的构造方法+set方法+get方法:

构造函数:初始化成员变量

get,set方法,获取和改变成员变量的值,JavaBean规范规定只使用get/set访问成员变量

构造函数:你每次写一个Java文件,实际上都写了一个类(创建一个类,jvm就会自动为这个类开辟一块内存空间)。有了类就需要有类对象,要产生类对象就需要构造函数对这个刚刚申请的内存空间做一点事,赋属性值之类的工作。当然,如果你不写,它就默认有一个Class()的构造方法出现,当然它什么活也不干。

你的属性是什么样的?public?private?默认?还是protected?这四种你找教材务必弄懂分清,很有用。如果是private,这种属性不许别的对象改和读,但有时候需要改/读,怎么办?写一个public void setAbc(xxx)和一个public xxx getAbc()就实现外部读写属性的功能了。

set ,get完全是自我规定的,就是设置初值和获得值的意思.你也可以修改成其他字符.但是用set ,get还是要好些,因为你能通过单词理解你写的代码的意思,方便阅读而已。

参考技术A @entity是指这个类映射有数据库表,那么你不使用这个类时,后台应该不会对其进行处理吧,只有当你从数据库读取数据时,由于你要读取的表映射有实体类(@entity注释的),那么后台应该会自动帮你实例化一个对象,然后将数据库中的数据填充到对象中吧!
个人理解,不一定正确!

类 '...\Entity\User' 没有方法 'getGenderList'

【中文标题】类 \'...\\Entity\\User\' 没有方法 \'getGenderList\'【英文标题】:Class '...\Entity\User' does not have a method 'getGenderList'类 '...\Entity\User' 没有方法 'getGenderList' 【发布时间】:2015-11-22 20:46:30 【问题描述】:

我正在使用Sonata Admin bundle 作为我网站的后端。

我的数据库中的用户表如下所示:

id (PK)
username
email
password
salt
last_login
created_at
company_id (FK)

我的用户实体如下所示:

<?php

namespace MyBundle\Entity;

use FOS\UserBundle\Entity\User as BaseUser;
//use Sonata\UserBundle\Entity\BaseUser as BaseUser;
use Doctrine\ORM\Mapping as ORM;

/**
 * User
 *
 * @ORM\Table(name="user", indexes=@ORM\Index(name="fk_user_company1_idx", columns="company_id"))
 * @ORM\Entity
 */
class User extends BaseUser

    /**
     * @var \DateTime
     *
     * @ORM\Column(name="created_at", type="datetime", nullable=true)
     */
    protected $createdAt;

    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    protected $id;

    /**
     * @var \MyBundle\Entity\Company
     *
     * @ORM\ManyToOne(targetEntity="MyBundle\Entity\Company")
     * @ORM\JoinColumns(
     *   @ORM\JoinColumn(name="company_id", referencedColumnName="id")
     * )
     */
    protected $company;

    public function __construct()
    
        parent::__construct();
        // your own logic
    

    /**
     * Set username
     *
     * @param string $username
     * @return User
     */
    public function setUsername($username)
    
        $this->username = $username;

        return $this;
    

    /**
     * Get username
     *
     * @return string 
     */
    public function getUsername()
    
        return $this->username;
    

    /**
     * Set email
     *
     * @param string $email
     * @return User
     */
    public function setEmail($email)
    
        $this->email = $email;

        return $this;
    

    /**
     * Get email
     *
     * @return string 
     */
    public function getEmail()
    
        return $this->email;
    

    /**
     * Set password
     *
     * @param string $password
     * @return User
     */
    public function setPassword($password)
    
        $this->password = $password;

        return $this;
    

    /**
     * Get password
     *
     * @return string 
     */
    public function getPassword()
    
        return $this->password;
    

    /**
     * Set salt
     *
     * @param string $salt
     * @return User
     */
    public function setSalt($salt)
    
        $this->salt = $salt;

        return $this;
    

    /**
     * Get salt
     *
     * @return string 
     */
    public function getSalt()
    
        return $this->salt;
    

    /**
     * Get id
     *
     * @return integer 
     */
    public function getId()
    
        return $this->id;
    

    /**
     * Set company
     *
     * @param \MyBundle\Entity\Company $company
     * @return User
     */
    public function setCompany(\MyBundle\Entity\Company $company = null)
    
        $this->company = $company;

        return $this;
    

    /**
     * Get company
     *
     * @return \MyBundle\Entity\Company 
     */
    public function getCompany()
    
        return $this->company;
    

现在当我转到“编辑帐户”页面时,我收到以下错误:

Warning: call_user_func() expects parameter 1 to be a valid callback, class 'MyBundle\Entity\User' does not have a method 'getGenderList'

我的数据库中的用户表中没有性别。我该如何解决这个问题?

更新:

当我将use FOS\UserBundle\Entity\User as BaseUser; 更改为use Sonata\UserBundle\Entity\BaseUser as BaseUser;。然后我收到以下错误:

执行 'SELECT t0.username AS username1, t0.username_canonical AS username_canonical2, t0.email AS email3, t0.email_canonical AS email_canonical4, t0.enabled AS enabled5, t0.salt AS salt6, t0.password AS 时发生异常password7, t0.last_login AS last_login8, t0.locked AS locked9, t0.expired AS expired10, t0.expires_at AS expires_at11, t0.confirmation_token AS Confirm_token12, t0.password_requested_at AS password_requested_at13, t0.roles AS roles14, t0.credentials_expired AS credentials_expired t0.credentials_expire_at AS credentials_expire_at16, t0.created_at AS created_at17, t0.updated_at AS updated_at18, t0.date_of_birth AS date_of_birth19, t0.firstname AS firstname20, t0.lastname AS lastname21, t0.website AS website22, t0.biography AS biography23, t0.性别 AS gender24, t0.locale AS locale25, t0.timezone AS timezone26, t0.phone AS phone27, t0.facebook_uid AS facebook_uid28, t0.facebook_name AS facebook_name29, t0.facebook_data AS facebook_data30, t0.twitt er_uid AS twitter_uid31, t0.twitter_name AS twitter_name32, t0.twitter_data AS twitter_data33, t0.gplus_uid AS gplus_uid34, t0.gplus_name AS gplus_name35, t0.gplus_data AS gplus_data36, t0.token AS token37, t0.two_step_code AS two_step_code38, t0. id39, t0.company_id AS company_id40 FROM user t0 WHERE t0.id = ? LIMIT 1' 带参数1:

SQLSTATE[42S22]:找不到列:1054 未知列 't0.updated_at' 在“字段列表”中

我该如何解决这个问题?

【问题讨论】:

你必须在你的类中实现缺失的方法。这就是错误信息告诉你的全部内容。 遇到了同样的问题,在收到这个 sql 错误后,我不得不删除与此相关的表(fos_user、fos_group 和 fos_user_group)、所有迁移文件并重新创建它们。更改现有表不起作用。 【参考方案1】:

您的 User 类从 FOSUserBundle 扩展,而不是 SonataUserBundle。你必须改变它:

//use FOS\UserBundle\Entity\User as BaseUser;
use Sonata\UserBundle\Entity\BaseUser as BaseUser;

查看https://github.com/sonata-project/SonataUserBundle/issues/459

编辑:如果你不想使用这个类(里面有很多无用的字段),那么你必须为你的 User 实体创建自己的管理类。这个页面有一个完整的指南:http://m2mdas.github.io/blog/2013/11/18/integrate-fosuserbundle-and-sonatauserbundle-easily/

更新后更新: 更改实体扩展的类后,您必须更新数据库架构以匹配您的模型:

php app/console doctrine:schema:update --force

【讨论】:

我已经更新了我的主题,有没有办法在不编写自己的管理类的情况下绕过它? 我已经更新了我的答案。您要么必须扩展适当的类,要么编写自己的管理类。

以上是关于entity类中用@ApiModelProperty注解啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

IntelliJ IDEA 在 JPQL 中用“无法解析符号”突出显示 @Entity 类名

cms-最近更新

Hibernate中用到联合主键的使用方法,为何要序列化,为何要重写hashcode 和 equals 方法

Hibernate中的Entity类之间的继承关系之一MappedSuperclass

01-hibernate注解:类级别注解,@Entity,@Table,@Embeddable

如何在 Hibernate 中用 TableGenerator 替换已弃用的 MultipleHiLoPerTableGenerator