我有两个实体:用户和公司,它们之间的关系是n:m。在我的user.php
实体中,我有以下代码:
/**
* @ORM\ManyToMany(targetEntity="PL\CompanyBundle\Entity\Company", mappedBy="users", cascade={"all"})
*/
protected $companies;
public function __construct() {
$this->companies = new \Doctrine\Common\Collections\ArrayCollection();
}
public function setCompanies(\PL\CompanyBundle\Entity\Company $companies) {
$this->companies = $companies;
}
public function getCompanies() {
return $this->companies;
}
/**
* @ORM\ManyToMany(targetEntity="Application\Sonata\UserBundle\Entity\User", mappedBy="companies")
*/
protected $users;
public function __construct() {
$this->users = new \Doctrine\Common\Collections\ArrayCollection();
}
映射出了什么问题?
编辑重构代码
根据@Ahmed-Siouani的指示,我做了以下更改:
/**
* @ORM\ManyToMany(targetEntity="PL\CompanyBundle\Entity\Company", inversedBy="users")
* @ORM\JoinTable(name="fos_user_user_has_company",
* JoinColumns={@ORM\JoinColumn(name="fos_user_user_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="company_id", referencedColumnName="id")}
* )
*/
protected $companies;
/**
* @ORM\ManyToMany(targetEntity="Application\Sonata\UserBundle\Entity\User", mappedBy="companies")
*/
protected $users;
在定义jointable
时,可能需要指定joincolumns
和inversejoincolumns
。因为双向多对多定义是类似的,
class User
{
// ...
/**
* Bidirectional - Many users have Many companies (OWNING SIDE)
*
* @ManyToMany(targetEntity="Company", inversedBy="users")
* @JoinTable(name="users_companies",
* joinColumns={@ORM\JoinColumn(name="user_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="company_id", referencedColumnName="id")}
* )
**/
private $companies;
public function __construct() {
$this->companies = new \Doctrine\Common\Collections\ArrayCollection();
}
// ...
}
虽然您的Company类应定义如下,
class Company
{
// ...
/**
* Bidirectional (INVERSE SIDE)
*
* @ManyToMany(targetEntity="User", mappedBy="companies")
*/
private $users;
如何为这种多对多关系分配默认值?制作两个关联表->一个用于收件箱-关系,另一个用于发件箱-关系会更好吗?我该如何做到这一点?这个问题的其他解决方案? 任何帮助都非常感谢--非常感谢!
问题内容: 我的Spring-Boot应用程序中有两个实体: User.java 和 角色.java 对于我的MySql数据库 我已经排除了此问题的getter和setter方法。 我想实现两个实体之间 的多对多关系 。每个用户都应该能够为其分配多个角色 我已经为数据库中的两个表创建了一个映射表。它有行 用户身份 role_id。 我还创建了一个新的Entity UserRole.java ,如下
我的Spring Boot应用程序中有两个实体: 使用者JAVA 和 Role.java 我的MySql数据库 我已经排除了这个问题的getter和setter方法。 我想实现两个实体之间的多对多关系。每个用户都应该能够为自己分配多个角色 我已经在我的数据库中为这两个表创建了一个映射表。它有几排 用户id 我还创建了一个新的实体UserRole。java,如下所示: 现在我的问题是:这种构造正确吗
itemdao.java posDatabase.java invoice.java 错误:错误:查询返回的列在com.example.qrreceipt.Item中没有字段[item_id,price],即使它们被注释为非空或原语。查询返回的列:[invoice_id,terminal_no,cashier_name]
我开始使用Room数据库并通过几个文档来创建房间实体。这些是我的关系。聊天频道可以有很多对话。所以这是一对多的关系。因此我创建了如下实体。 渠道实体 会话实体 现在,您可以看到,对话属于一个频道。当用户看到频道列表时,我需要在列表项中显示上次对话的几个属性。我的问题是,如果我只是像上面那样声明关系,或者应该在通道类中包含会话对象,这就足够了吗?我还有什么其他方法可以处理它?因为当用户滚动时,UI需
我试图使用code runner在visual studio代码中编译一个带有experimental::filesystem的项目,但是我甚至无法在终端中编译它。 代码如下,文档中的一个非常简单的测试用法: 使用编译 在code-runner配置中或使用just in-terminal通常无法编译或无法工作。 它提供的错误是: 如果有任何帮助,我将不胜感激。我正在运行linux,并且已经检查过l