所以这是场景:
我有两个表,问题和项目.
一个项目可以有很多问题,一个问题可以只有一个项目.
由于问题是多对一的,你必须定义它吗?
因为我知道项目模型我有:
public function relations()
{
return array(
'issues' => array(self::HAS_MANY, 'Issue', 'project_id'),
'users' => array(self::MANY_MANY, 'User', 'tbl_project_user_assignment(project_id, user_id)'),
);
}
Run Code Online (Sandbox Code Playgroud)
对于问题模型我只有外键:
public function relations()
{
// NOTE: you may need to adjust the relation name and the related
// class name for the relations automatically generated below.
return array(
'requester' => array(self::BELONGS_TO, 'User', 'requester_id'),
'owner' => array(self::BELONGS_TO, 'User', 'owner_id'),
'project' => array(self::BELONGS_TO, 'Project', 'project_id'),
);
}
Run Code Online (Sandbox Code Playgroud)
我猜任何一个关系都不需要定义?
先感谢您.
顺便说一句,我正在做敏捷的Yii书,最后我问自己这个问题.AR类中有一个选项(http://www.yiiframework.com/doc/guide/database.arr).
但由于某种原因,这种情况是否可选?
我有以下表格:
create table TableA (
Id int primary key identity,
Name varchar(80) not null
)
create table TableB (
Id int primary key identity,
TableA_Id int not null foreign key references TableA(Id),
Value varchar(80) not null
)
Run Code Online (Sandbox Code Playgroud)
我想写一个类似的查询
select TableA.Name, TableB.Value
from TableA
inner join TableB on TableA.Id = TableB.TableA_Id
where TableA.Name like 'a%'
order by TableB.Value asc
Run Code Online (Sandbox Code Playgroud)
除了我只想要每个TableA_Id中的前10名TableB.Value(按TableB.Value升序排序).
而不是每个TableB.Value都返回TableA.Name,我只想要每个的前10个值TableA.Name.
这样的查询会是什么?
sql one-to-many many-to-one sql-server-2008 sql-server-2008-r2
嗨,我正在使用@ManyToOne 注释进行实体映射。
下面是我的实体,它们之间有 manytoone 关联
学生.java
@Entity
@Table(name = "student")
public class student{
@Id
@Column(name = "UserID")
private String userid;
@ManyToOne(cascade = CascadeType.ALL,fetch = FetchType.EAGER)
@JoinColumns({
@JoinColumn(name = "userrole1", referencedColumnName = "VALUE"),
@JoinColumn(name = "userrole2", referencedColumnName = "DESCRIPTION")
})
private studentdetails1 userrole1;
@ManyToOne(cascade = CascadeType.ALL,fetch = FetchType.EAGER)
@JoinColumns({
@JoinColumn(name = "userrole1", referencedColumnName = "VALUE",insertable=false, updatable=false),
@JoinColumn(name = "userrole2", referencedColumnName = "DESCRIPTION", insertable=false, updatable=false)
})
private studentdetails2 userrole2;
//setters and getters
//constructor
}
Run Code Online (Sandbox Code Playgroud)
studentdetails1.java
@Data
@Entity
@Table(name = "student_details1")
public class …Run Code Online (Sandbox Code Playgroud) 我希望反向绘制地图,这意味着我有很多键,只有一个值.我需要这个结构,所以当我搜索其中一个键时,我得到了值.
我可以使用简单的哈希映射,但由于多次存储值,它会浪费空间.我正在寻找java中的优化和高效实现.我很感激你的建议.
我正在使用VS 2013开发ASP.NET MVC 5,EF 6,Razor Engine,VB语言和数据库第一种方法.
现在,在我的数据库中; 我有两个表格如下:
CREATE TABLE [dbo].[Group]
(
[Id] INT NOT NULL PRIMARY KEY IDENTITY(1, 1),
[Name] VARCHAR(50) NOT NULL
)
Run Code Online (Sandbox Code Playgroud)
和
CREATE TABLE [dbo].[Subscriber]
(
[Id] INT NOT NULL PRIMARY KEY IDENTITY(1, 1),
[FirstName] [nvarchar](100) NOT NULL,
[MiddleName] [nvarchar](100) NULL,
[LastName] [nvarchar](100) NOT NULL,
[Email] [varchar] (200) NOT NULL UNIQUE,
[GroupId] INT NULL REFERENCES [Group] ON DELETE SET NULL
)
Run Code Online (Sandbox Code Playgroud)
现在,当我使用脚手架自动生成控制器和视图时; 我Group在"创建订阅者"和"编辑订阅者"视图中得到一个<select>控件(所有项目都在<option>里面).
但实际上,我希望"创建组"和"编辑组"视图向我询问我Subscribers想要添加到特定组中.对于相同的HTML控制可以是复选框的列表或<选择多个="多个">与所有Subscriber的项目,如<选项>秒. …
asp.net-mvc entity-framework one-to-many many-to-one asp.net-mvc-scaffolding
在我的可审计实体中,我有一个字段creationUser,我不想在db merge操作中更新.
这是我的实体代码:
@Column(updatable=false)
@ManyToOne(cascade = CascadeType.MERGE)
public User creationUser;
Run Code Online (Sandbox Code Playgroud)
但它给了我一个错误:
Unexpected exception
PersistenceException: [PersistenceUnit: defaultPersistenceUnit] Unable to build EntityManagerFactory
Caused by: org.hibernate.AnnotationException: @Column(s) not allowed on a @ManyToOne property: models.AreaOfMedicine.creationUser
Run Code Online (Sandbox Code Playgroud)
那么如何防止更新该字段呢?请帮忙
LazyInitializationException当我尝试访问分离实体的惰性 @ManyToOne 引用的 ID 时,我正面临着这种情况。我不想完全获取引用,而只需要 ID(它应该存在于原始对象中,以便以惰性/延迟方式获取引用)。
EntityA ea = dao.find(1) // find is @Transactional, but transaction is closed after method exits
ea.getLazyReference().getId() // here is get exception. lazyReference is a ManyToOne relation and so the foreight key is stored in EntityA side.
Run Code Online (Sandbox Code Playgroud)
换句话说,如何在不实际获取整个 LazyReference 的情况下访问 LazyReference 的 ID(实际上存在于 EntityA 的初始选择中)?
我有一定数量的产品清单,我需要在Django中对其建模。
每个订单都具有以下属性:
id
email
total_price
line_items
Run Code Online (Sandbox Code Playgroud)
line_items是产品和所需产品实例数的字典。
产品是描述一类产品的单独模型。
我需要在产品和订单之间建立多对多关系,因为每个产品可能是许多订单的一部分,但是每个订单可能有很多产品-如果我的订单中有3个实例,这在我的字段中看起来如何?一个产品,另外2个,等等...?
此异常与以下内容有关
spring.jpa.hibernate.ddl-auto=update
Run Code Online (Sandbox Code Playgroud)
我还没有尝试保存任何数据
在我看来,映射是正确的,但仍然抛出异常:
org.hibernate.tool.schema.spi.CommandAcceptanceException:通过 JDBC 语句执行 DDL“create table order(id bigint not null auto_increment,order_date date,user_id bigint,primary key(id))engine=MyISAM”时出错
引起原因:java.sql.SQLSyntaxErrorException:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,了解在第 1 行“order (id)”附近使用的正确语法
我的映射如下所示:
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@MappedSuperclass
public abstract class BaseEntity {
@Id
@GeneratedValue(
strategy = GenerationType.IDENTITY
)
private Long id;
}
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Entity(name = "Order")
@Table(name = "order")
public class Order extends BaseEntity {
private LocalDate orderDate;
@OneToMany(mappedBy = "order", cascade = CascadeType.ALL)
private List<OrderedTicket> orderedTickets = new ArrayList<>();
private Long userId; …Run Code Online (Sandbox Code Playgroud) 很简单:
我有一个实体机构
/**
* @var \Rewards\LocationBundle\Entity\Address
*
* @ORM\ManyToOne(targetEntity="\Acme\xxBundle\Entity\Address", cascade={"persist"})
* @ORM\JoinColumn(name="address_id", referencedColumnName="id")
*/
protected $address;
Run Code Online (Sandbox Code Playgroud)
我有一个创建表单的AgencyType:
$builder
->add('name')
->add('address');
Run Code Online (Sandbox Code Playgroud)
我也有AddressType
$builder
->add('street')
->add('zipCode')
->add('city')
->add('country');
Run Code Online (Sandbox Code Playgroud)
有了这个配置,如果我把:
{{ form_widget(form) }}
Run Code Online (Sandbox Code Playgroud)
在twig模板中我只查看'Select'表单小部件,但我想查看AgencyType AddressType形式的所有字段.
我怎么能这样做?
快要疯了:
我只是想在我的自定义模块中添加一个 Many2one 字段。(模块从头开始,不继承其他人或扩展其他人)。
light_system = fields.Many2one('product.product', string='Lighting System', ondelete='restrict')
当我重新启动服务器时我得到:
WARNING newtest openerp.fields: Field jobsite.location.light_system with unknown comodel_name 'product.product'
当我尝试从表单中的该字段中选择某些内容时,如果失败并显示:
ProgrammingError: relation "_unknown" does not exist
LINE 1: SELECT "_unknown".id FROM "_unknown" ORDER BY "_unknown"."id...
如果我使用product.template,也会发生同样的情况。如果我将“product.product”更改为“res.partner”,它就可以正常工作(对于联系人)...
我在这里缺少什么?我进行了搜索和谷歌搜索,缺乏类似的问题让我觉得我错过了一些非常简单的东西,我应该为产品使用什么模型?
我有删除到多对一关系的多方面的问题。我已经从关系中删除了所有CascadeTypes,但问题仍然存在。该条目不会被删除(只执行选择,不执行删除查询)。我正在尝试通过 CRUD 存储库调用删除它来删除它。它调用该方法并成功执行但没有任何反应。
关系如下:一个活动有一个分配的课程,一个课程可以有许多分配给它的活动。一个 Activity 有一个特定的 ActivityType。
课程如下。
活动
public class Activity implements Item, Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
...
@ManyToOne
@JoinColumn(name = "type_id", nullable = false)
private ActivityType type;
@ManyToOne
@JoinColumn(name = "course_id", nullable = false)
@JsonSerialize(using = CustomCourseSerializer.class)
private Course course;
...
}
Run Code Online (Sandbox Code Playgroud)
课程
public class Course implements Item, Serializable {
...
@OneToMany(mappedBy = "course", fetch = FetchType.EAGER, targetEntity = Activity.class) //cascade = { CascadeType.MERGE, CascadeType.REFRESH, CascadeType.DETACH, …Run Code Online (Sandbox Code Playgroud) 简单地说,我在 Child 类和 Parent 类上有一个多对一的关系。我想加载所有孩子而不必加载他们的父母详细信息。我的孩子班级是
@Entity
public class Child implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "parentId", referencedColumnName = "id")
private Parent parent;
public Child() {
}
// Getters and setters here
}
Run Code Online (Sandbox Code Playgroud)
我的父类是
@Entity
public class Parent implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
public Parent() {
}
}
Run Code Online (Sandbox Code Playgroud)
我有一个休息控制器,我想用它来获取所有没有父母的孩子
@GetMapping
public List<Child> getChildren() {
return childRepository.findAll();
}
Run Code Online (Sandbox Code Playgroud)
当我运行它时它会抛出
{
"timestamp": "2019-02-22T13:45:31.219+0000", …Run Code Online (Sandbox Code Playgroud) many-to-one ×13
hibernate ×5
java ×4
jpa ×2
lazy-loading ×2
one-to-many ×2
activerecord ×1
annotations ×1
asp.net-mvc ×1
database ×1
django ×1
foreign-keys ×1
map ×1
mysql ×1
odoo-9 ×1
persistence ×1
php ×1
spring ×1
spring-boot ×1
sql ×1
sql-delete ×1
symfony ×1
yii ×1